分类
- 创建型模式:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式
- 结构型模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式
- 行为型模式:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。
设计模式六大原则
- 总原则-开闭原则
对扩展开放,对修改封闭。
在需要对程序进行扩展时,不去修改原来的代码,而是要扩展原有代码,类似热插拔。需要使用接口或者抽象类。
- 单一职能原则
- 不要存在多余一个类变更的原因,也就是每个类应该实现单一的职责,否则需要将类进行拆分。
- 里氏替换原则
任何基类可以出现的地方,子类一定可以出现。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
里氏替换原则是对实现抽象化的具体步骤的规范。其中子类对父类的方法尽量不要重写和重载。因为父类代表着定义好的结构,通过这个规范的接口与外界交互,子类不应该破坏。
- 依赖倒转原则
- 面向接口编程,依赖于抽象而不依赖于具体。写代码时用到具体类时,不与具体类交互,而是与具体类的上层接口交互。
- 接口隔离原则
- 每个接口中不存在子类用不到却必须实现的方法,否则就拆分接口。使用多个隔离的接口,比使用单个接口要好。
- 迪米特法则
一个类对自己依赖的类知道的越少越好。无论被依赖的类多么复杂,都应该讲逻辑封装到方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。
最少知道原则:只与直接的朋友通信,类之间要是有耦合关系,就称为朋友关系。耦合分为依赖,关联,聚合,组合灯,我们成出现为成员变量,方法参数,方法返回值中的类为直接朋友。局部变量,临时变量则不是直接朋友。我们要求陌生的类不要作为局部变量出现在类中。
- 合成复用原则
- 尽量首先使用合成、聚合方式,而不是使用继承。