# design-patterns **Repository Path**: csq-cn/design-patterns ## Basic Information - **Project Name**: design-patterns - **Description**: 学习设计模式 - **Primary Language**: TypeScript - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-08-21 - **Last Updated**: 2024-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # design-patterns #### 介绍 学习设计模式 1. 设计模式的原则 描述不断发生的重复问题,以及该问题解决方案的核心。能一次又一次的使用该方案不必重复劳动。 2. 一大法则 迪米特法则(最少知识法则):一个软件实体应该尽可能少的与其他实体发生相互作用,每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。 3. 五大原则: 1. 单一职责原则:一个类应该仅有一个引起它变化的原因,简单来说就是功能要单一。 2. 开放封闭原则:对扩展开发,对修改关闭。 3. 里氏替换原则:基类出现的地方,子类一定出现。 4. 接口隔离原则:一个接口应该是一种角色,不该干的事情不干,该干的都要干,降低耦合、减低依赖。 5. 依赖翻转原则:针对接口编程,以来抽象而不依赖具体。 4. 高内聚、低耦合 1. 内聚:一个功能模块只关注一个功能。 2. 低耦合:尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生。 5. 设计模式: 1. 创建型:5 - 工厂模式:创建对象时不会对客户端暴露创建逻辑,并且通过使用一个共同的接口来指向新创建的对象。借助构造函数实现。 - 单例模式:保证一个类仅有一个访问它的全局变量。如:弹窗,vuex,jQuery。 - 原型模式:用原型实例创建新的对象。通过拷贝这些原型创建新的对象。要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它。 - 构造器模式 - 抽象工厂模式 2. 结构型:7 - 装饰器模式 - 适配器模式 - 代理模式 - 桥接模式 - 外观模式 - 组合模式 - 享元模式 3. 行为型:11 - 迭代器模式 - 发布/订阅模式(观察者) - 策略模式 - 状态模式 - 解释器模式 - 中介者模式 - 访问者模式 - 备忘录模式 - 模板方式模式 - 职责链模式 - 命令模式