1、为什么使用?设计模式,可以使代码更简洁、更优美、更效率、扩展性型更强。
2、设计模式的原则:开闭原则(对拓展开放,对修改关闭)(抽象化是关键)
--单一职责原则:类的职责应该单一(不存在多种原因导致类的变更),否则类应该被拆分。
--里氏替换原则:任何基类可以出现的地方,子类一定可以出现。(LSP)(该规范中子类尽可能不要重写或重载基类的方法)(面向对象设计的基本原则之一)(开闭原则的补充)(抽象化的具体实现)
--依赖反转原则:依赖于抽象,不依赖于具体。(编程是需要依赖具体的类时,不与该类交互,而转向与该类的上层接口交互)(面向接口)(开闭原则的基础)
--接口隔离原则:每个接口,对于实现该接口的类,不存在冗余的方法,否则需拆分接口。(使用多个隔离接口,要优于一个集合接口)
--最少知道原则:类对于自己依赖的类知道的越少越好。(迪米特法则)(无论依赖的类的逻辑多么复杂,子类只需要通过逻辑被封装的暴露的方法去使用即可)(该原则保证依赖的类改变是,对继承他的类影响最小)(只与直接朋友通信)(朋友关系:类之间存在耦合[依赖,关联,聚合,组合])(直接朋友:作为成员变量,方法参数,方法返回值的类)(陌生类不要出现在局部变量中)
--合成复用原则:合成/聚合优于继承。
3、模式应用场景
----结构模式
--适配器模式(Adapter):已有接口和定义接口不匹配。(类的适配器模式和对象的适配器模式)
实现描述:
类适配(原始类A有一方法funcA,接口faceA需要实现funcA、funcB,实现一个适配类B