# design-patterns **Repository Path**: study_2_1/design-patterns ## Basic Information - **Project Name**: design-patterns - **Description**: 前端设计模式 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-22 - **Last Updated**: 2023-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: JavaScript, 设计模式, 设计原则 ## README # 前端设计模式 > 准备 > [环境搭建](环境搭建.md) > [面向对象设计](面向对象.md) ## 设计原则 ### UNIX/LINUX设计哲学 #### 准则 - 准则1:小即是美 - 准则2:让每个程序只做好一件事情 - 准则3:快速建立原型 - 准则4:舍弃高效率而取可移植性 - 准则5:采用纯文本来存储数据(相对应为二进制数据) - 准则6:充分利用软件的杠杆效应(软件复用) - 准则7:使用shell脚本来提高杠杆效应和可移植性 - 准则8:避免强制性的用户界面(非系统必备项,影响系统性能、安全) - 准则9:让每个程序都称为过滤器(可对数据连续操作) #### 小准则 - 允许用户定制环境 - 尽量使操作系统内核小而轻量化 - 使用小写字母并尽量简短化 - 沉默是金(非必要不输出) - 各部分之和大于整体(降低复杂度) - 寻求90%的解决方案(不要过度追求完美) ### SOLID设计原则 #### S - 单一职责原则 - 一个程序只做好一件事 - 如果功能过于复杂就拆分开,每个部分保持独立 #### O - 开放封闭原则 - 对扩展开放,对修改封闭 - 增加需求时,扩展新代码,而非修改已有代码 - 这是软件设计的终极目标 #### L - 里氏置换原则 - 子类能覆盖父类 - 父类能出现的地方,子类就能出现 - 子类不得重写父类已实现的方法 - JS中使用较少(弱类型 & 继承使用较少) #### I - 接口独立原则 - 保持接口的单一独立,避免出现“胖接口” - JS中没有接口(TypeScript例外),使用较少 - 类似于单一职责原则,这里更关注接口 #### D - 依赖倒置原则 - 面向接口编程,依赖于抽象而不依赖于具体 - 使用方只关注接口而不关注具体类的实现 - JS中使用较少(没有接口 & 弱类型) ### 总结 - S O 体现较多,详细介绍 - L I D 体现较少,但要理解其用意 ## 23种设计模式 ### 创建型 - [工厂模式(工厂方法模式,抽象工厂模式,建造者模式)](src/factory/README.md) - [单例模式](src/singleObject/README.md) - 原型模式 ### 组合型 - [适配器模式](src/adapt/README.md) - [装饰器模式](src/decorate/README.md) - [代理模式](src/proxy/README.md) - [外观模式](src/facade/README.md) - 桥接模式 - 组合模式 - 享元模式 ### 行为型 - [观察者模式](src/observer/README.md) - [迭代器模式](src/iterator/README.md) - 状态模式 - 策略模式 - 模板方法模式 - 职责链模式 - 命令模式 - 备忘录模式 - 中介者模式 - 解释器模式 - 访问者模式 ## 面试题 - [面试题1]() - [面试题2]()