设计模式

面向对象语言开发过程中,遇到种种的场景和问题,提出的解决方案和思路,沉淀下来 设计模式是解决具体问题的套路
  1. 创建型设计模式
  2. 结构型设计模式
  3. 行为型设计模式
设计模式六大原则:单一职责 里氏替换 依赖倒置 最小接口 迪米特 开闭 ;这些只能叫原则,叫建议,没有实际的招数
面向对象23种设计模式:面向对象语言开发过程中,遇到的种种场景和问题,提出了解决方案和思路,沉淀下来就变成了设计模式

创建型设计模式

关注对象的创建
  • 单例模式:就是限制了对象的创建,重用了对象
  • 原型模式:换个方式创建对象,不走构造函数,而是内存拷贝
  • 简单工厂:不直接new,把对象创建转移到工厂类(简单工厂不属于23种设计模式)
  • 工厂方法:屏蔽对象的创建;留下了扩展空间;
  • 抽象工厂:屏蔽对象的创建;约束强制保障产品簇;
  • 建造者模式:复杂的工厂方法

结构型设计模式

关注类与类之间的关系 (组合优于继承,结构型设计模式的核心)
  • 适配器模式:解决重构的问题,新东西和旧系统不吻合,通过继承/组合进行适配
  • 代理模式:通过代理完成对业务类的访问,包一层方便任意功能扩展
  • 装饰器模式:通过组合+继承,完成对象功能动态扩展
多种结构型设计模式其实都是用组合包一层,然后加功能

行为型设计模式

关注对象和行为的分离
  • 模板方法设计模式:在基类父类定义流程,把可变逻辑分离到不同子类实现
  • 观察者模式:一个对象动作触发多个对象的行为,通过观察者可以去掉对象的依赖,支持各种自定义和扩展
  • 责任链模式:请求的处理流程,沿着链子顺序执行,还运行链子扩展和订制
把锅丢出去,只管自己,哪管洪水滔天
把不稳定的地方移出去,自己只写稳定的,能保证自身的稳定

没有什么设计模式是完美无缺的,一个设计模式就是解决一类的问题的,通常设计模式在解决一类问题的同时,还会带来别的问题,我们设计者要做的事儿,就是要扬长避短,充分发挥长处!