分类

创建型【5种】

  • 工厂方法模式
  • 抽象工厂模式
  • 单例模式
  • 建造者模式
  • 原型模式

结构型【7种】

  • 适配器模式
  • 装饰者模式
  • 代理模式
  • 外观模式
  • 桥接模式
  • 组合模式
  • 享元模式

行为型【11种】

  • 策略模式
  • 模板方法模式
  • 观察者模式
  • 迭代器模式
  • 责任链模式
  • 命令模式
  • 备忘录模式
  • 状态模式
  • 访问者模式
  • 中介者模式
  • 解释器模式

七大软件架构设计原则

1、开闭原则

总原则,(Open-Closed Principle,OCP),指一个软件实体如类、模块、函数应对扩展开放,对修改关闭。强调用抽象构建框架,用实现扩展细节,提高系统的可复用性及可维护性。面向抽象编程

2、依赖倒置原则

(Dependence Inversion Principle,DLP),指高层不应该依赖底层模块,都应该依赖抽象(即面向接口编程);抽象不应该依赖细节,而应该细节依赖抽象。降低耦合度,提高系统稳定性、可读性、可维护性。

3、单一职责原则

(Simple Responsibility Principle,SRP),指不要存在一个以上导致类变更的原因。每个Class、Interface、Method都应该负责单一职责。降低复杂度,提高可读性、可维护性,降低变更引起的风险。

4、接口隔离原则

(Interface Segregation Principle,ISP),指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖他不需要的接口。

  • 一个类对另一个类的依赖应该建立在最小接口上
  • 建立单一接口,不要建立庞大臃肿的接口
  • 尽量细化接口,接口中方法尽量少(不是越少越好,一定要适度)

接口隔离原则符合“高聚合,低耦合”设计思想,提高可读性、可扩展性和可维护性。

5、迪米特法则

(Law of Demeter,LoD),又叫最少知道原则(Least Knowledge Principle,LKP),指一个对象对应该其他对象保持最少的了解,降低类与类之间的耦合度。

6、里氏替换原则

(Liskov Substitution Principle,LSP),指父类可以适用的地方,替换成子类也一样可以适用,且程序逻辑不变。

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
  • 子类可以增加自己特有的方法
  • 子类重载父类的方法时,入参要比父类的方法入参更宽泛
  • 子类实现父类的方法时(重写/重载或实现抽象方法),输出/返回值要比父类的更严格或相等

7、合成复用原则

(Conposite/Aggregate Reuse Principle,CARP),指尽量使用组合或聚合实现代码复用,而不使用继承。降低耦合度。