没有什么设计模式是完美无缺的,一个设计模式就是解决一类的问题,通常设计模式在解决一类问题的同时,还会带来别的问题,我们设计者要做的事,就是扬长避短。
1、创建型设计模式,5个===》关注对象的创建
2、结构型设计模式,7个===》关注类与类之间的关系
3、行为设计模式,11个====》关注对象和行为的分离
设计模式六大原则:单一职责、里氏替换原则、依赖倒置原则、迪米特法则、接口隔离原则、开闭原则。这些只能叫原则,是建议,没有实际的招数。
面向对象23中设计模式:
面向对象语言开发过程中,遇到的种种场景和问题,提出了解决方案和思路,沉淀下来就变成了设计模式。
1、创建型设计模式:关注对象的创建
单例模式:
就是限制了对象的创建,重用了对象
原型模式:
换个方式创建对象,不走构造函数,而是内存拷贝
三大工厂:
简单工厂:不直接new出来,把对象创建移到工厂,简单工厂不属于23种设计模式
工厂方法:转移对象的创建,留下了扩展空间
抽象工厂:屏蔽对象的创建;约束强制保障产品簇;创建对象,创建一组密不可分的对象。
2、结构型设计模式:关注类与类之间的关系
纵向关系:继承≈实现,超强关联
横向关系:组合>聚合>关联>依赖
依赖:出现在方法内部。
组合优于继承,结构型设计模式的核心。
适配器模式:
解决重构的问题,新东西和旧系统不吻合,通过继承/组合进行适配。
代理模式:
通过代理完成对业务的访问,包一层方便任意功能的扩展
装饰器模式:
结构型设计模式巅峰之作,组合+继承,通过组合+继承,完成对象功能动态扩展。
外观模式(门面模式)
组合模式
桥接模式
享元模式
多种设计模式,其实就是组合包一层,然后加功能。解决不同的问题,然后有不同的侧重点,也有不同的规范。
3、行为型设计模式:关注对象和行为的分离
核心:甩锅大法,把锅丢出去,只管自己,把不稳定的地方移出去,自己只谢文鼎的,能保证自身的稳定。
模板方法设计模式:
在基类中定义流程,把可变逻辑分离到不同子类实现
观察者模式:
一个对象动作触发多个对象的行为,通过观察者可以去掉对象的依赖,支持各种已定义和扩展
责任链设计模式:
把请求的处理流程,沿着链子顺序执行,还允许链子的扩展和定制
策略模式、迭代器模式........
很多时候,可能会融合应用多个设计模式,分别解决对应的问题。