分类
创建型【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),指尽量使用组合或聚合实现代码复用,而不使用继承。降低耦合度。