设计模式

一、“开-闭”原则(OCP)

  对扩展开放,对修改关闭。

  里氏代换原则(LSP):任何基类可以出现的地方,子类一定可以出现。

  依赖倒转原则(DIP):依赖于抽象,不要依赖于实现;抽象不应当依赖于细节,细节应当依赖于抽象;要针对接口编程,不要针对实现编程;

  合成/聚合复用原则(CARP):尽量使用合成/聚合,而不是继承。

  迪米特法则(LoD):一个软件实体应当与尽可能少的其它实体发生相互作用。

  接口隔离原则(ISP):应当为客户端提供尽可能小的单独接库,而不是提供大的总接口;

二、创建型模式

  简单工厂模式:由一个工厂类根据传入的参数决定创建哪一种产品类的实例。

  工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工厂工作推迟到子类中。

  抽象工厂模式:向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。

  单例模式:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

  建造者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

  原型模式:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的方法创建出更多同类型的对象。

三、结构型模式

  适配器模式:将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。

  装饰器模式:以对客户端透明的方式扩展对象的功能,是继承关系的一种替代方案。

  代理模式:给某一个对象提供一个代理对象,并有代理对象控制原对象的引用。

  外观(门面)模式:外部与一个子系统的通信必须通过一个统一的门面对象进行。

  桥接模式:用于把抽象化与实现化解耦,使得二者可以独立变化。

  组合(合成、整体)模式:将对象组织到树结构中,可以用来描述整体与部分的关系。

  享元模式:主要用于减少创建对象的数量,以减少内存占用和提高性能。

四、行为型模式

  策略模式:针对一组算法,将每一个算法封装到具体的共同接口的独立的类中,从而使得它们可以相互替换。

  模板方法模式:准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以一不同的形式实现这些抽象方法,从而对剩余的逻辑有不同的实现。

  观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

  迭代子(游标)模式:可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象。

  责任链模式:为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。

  命令模式:把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

  备忘录模式:保存一个对象的某个状态,以便在适当的时候恢复对象。

  状态模式:允许一个对象在其内部状态改变的时候改变其行为。

  访问者模式:封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。

  中介者模式:用来降低多个对象和类之间的通信复杂性。

  解释器模式:实现了一个表达式接口,该接口解释一个特定的上下文。

原文地址:https://www.cnblogs.com/wscy/p/7684543.html