1、设计模式扮演的角色:
(1)帮助我们组织模块(2)帮助我们设计沟通(3)提高代码质量
2、设计原则
- 开闭原则:对扩展开放,对修改关闭
- 单一职责原则:一个模块只做一件事情
- 依赖倒置原则:上层模块不要依赖具体的下层模块,而应该依赖于抽象
- 接口隔离原则:接口功能单一,能力单一,细化接口,接口功能单一化
- 迪米特法则:最少知识原则,沟通时知道的越少越好
- 里氏替换原则:关注继承,父类使用的地方都可以用子类替换
3、设计模式分类
分类 | 作用 | 具体包括 |
创建型 | 优雅地创建对象 | 工厂模式-大量创建对象; 单例模式-全局只能有一个实例化对象; 建造者模式-精细化组合对象,需要大量参数,且内部模块庞大; 原型模式-JavaScript的灵魂。 |
结构型 | 优雅地设计代码结构 | 外观模式-给你的一个套餐; 享元模式-共享来减少数量; 适配器模式-用适配代替更改; 桥接模式-独立出来,然后再对接过去,减少耦合度; 装饰者模式-更优雅地扩展需求。 |
行为型 | 组织模块行为 | 观察者模式-我作为第三方转发; 职责链模式-像生产线一样组织模块; 状态模式-用状态代替判断; 命令模式-用命令解耦; 策略模式-算法工厂; 迭代器模式-告别for循环。 |
技巧性 | 提供优化代码的技巧 | 链模式-链式调用; 惰性模式-我要搞机器学习; 委托模式-让别人代替你收快递; 等待者模式-等你们都回来再吃饭; 数据访问模式-一个方便的数据管理器。 |