设计原则及设计模式分类

本文是对所有设计模式的分类以及说明。


面向对象程序设计的五大基本原则SOLID

S 单一功能原则(Single Responsibility Principle)

单一功能原则规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。所有它的(这个类的)服务都应该严密的和该功能平行(功能平行,意味着没有依赖)。

O 开闭原则(Open-Closed Principle)

开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”[1],这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。

L 里氏替换原则(Liskov Substitution Principle)

里氏替换原则是对子类型的特别定义,它规定派生类(子类)对象能够替换其基类(超类)对象被使用。

I 接口隔离原则(Interface-Segregation Principle)

接口隔离原则指明客户(client)应该不依赖于它不使用的方法。接口隔离原则(ISP)拆分非常庞大臃肿的接口成为更小的和更具体的接口,这样客户将会只需要知道他们感兴趣的方法。这种缩小的接口也被称为角色接口(role interfaces)。接口隔离原则(ISP)的目的是系统解开耦合,从而容易重构,更改和重新部署。

D 依赖反转原则(Dependency Inversion Principle)

依赖反转原则规定:

  1. 高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口
  2. 抽象接口不应该依赖于具体实现。而具体实现则应该依赖于抽象接口

设计模式的六大原则

1. 开闭原则(Open-Closed Principle)

2. 里氏替换原则(Liskov Substitution Principle)

3. 依赖反转原则(Dependency Inversion Principle)

4. 接口隔离原则(Interface-Segregation Principle)

5. 迪米特法则,又称最少知道原则 (Demeter Principle)

迪米特法则(最少知道原则):一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

6. 合成复用原则(Composite Reuse Principle)

合成复用原则:尽量使用合成/聚合的方式,而不是使用继承。

一句话总结:

开闭原则:实现热插拔,提高扩展性。

里氏代换原则:实现抽象的规范,实现子父类互相替换;

依赖倒转原则:针对接口编程,实现开闭原则的基础;

接口隔离原则:降低耦合度,接口单独设计,互相隔离;

迪米特法则:功能模块尽量独立;

合成复用原则:尽量使用聚合,组合,而不是继承;

设计模式的类型:

一. 创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

  1. 单例模式(Singleton Pattern)
  2. 工场模式(Factory Pattern)
    • 简单工厂模式(Simple Factory Pattern)
    • 工厂方法模式(Factory Method Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
  3. 创建者模式(Builder Pattern)
  4. 原型模式(Prototype Pattern)

二. 结构型模式

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

  1. 适配器模式(Adapter Pattern)
  2. 桥接模式(Bridge Pattern)
  3. 过滤器模式(Filter、Criteria Pattern)
  4. 组合模式(Composite Pattern)
  5. 装饰器模式(Decorator Pattern)
  6. 外观模式(Facade Pattern)
  7. 享元模式(Flyweight Pattern)
  8. 代理模式(Proxy Pattern)

三. 行为型模式

这些设计模式特别关注对象之间的通信。

  1. 责任链模式(Chain of Responsibility Pattern)
  2. 命令模式(Command Pattern)
  3. 解释器模式(Interpreter Pattern)
  4. 迭代模式(Iterator Pattern)
  5. 中介者模式(Mediator Pattern)
  6. 备忘录模式(Memento Pattern)
  7. 观察者模式(Observer Pattern)
  8. 状态模式(State Pattern)
  9. 空对象模式(Null Object Pattern)
  10. 策略模式(Strategy Pattern)
  11. 模版模式(Template Pattern)
  12. 访问中模式(Visitor Pattern)

四. J2EE模式

这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。

  1. MVC 模式(MVC Pattern)
  2. 业务代表模式(Business Delegate Pattern)
  3. 组合实体模式(Composite Entity Pattern)
  4. 数据访问对象模式(Data Access Object Pattern)
  5. 前端控制器模式(Front Controller Pattern)
  6. 拦截过滤器模式(Intercepting Filter Pattern)
  7. 服务定位器模式(Service Locator Pattern)
  8. 传输对象模式(Transfer Object Pattern)

设计模式之间的关系

本文参考:

设计模式| 菜鸟教程

SOLID (面向对象设计)