首页 > 代码库 > 设计模式介绍

设计模式介绍

设计模式

设计原则

开闭原则(OCP:对扩展开放,对修改关闭

里氏代换原则(LSP:子类型必须能够替换它们的基类型

依赖倒置原则(DIP:要依赖于抽象,不依赖于具体

接口隔离原则(ISP:每个接口是一种角色,不多不少,不干不该干的事,该干的事都要干

迪米特法则(LoD【又叫最少知识原则(LKP)】:高内聚低耦合(一个对象对其它对象有尽可能少的了解)

合成/聚合复用原则(CARP:尽量使用合成/聚合,尽量不要使用继承

设计模式的分类

按照目的分:

创建型:(与类和对象的创建有关)

工厂方法模式:定义一个接口用于创建对象,但是让子类决定实例化哪个类。把一个类的实例化下放到子类

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

单例模式:确保一个类只有一个实例,并提供对该实例的全局访问。

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

原型模式:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

结构型:(处理类与对象的组合关系)

适配器模式:将某个类的接口转换成客户端期望的另一个接口表示。

装饰器模式:向某个对象动态的添加更多的功能。

代理模式:为其他对象提供一个代理以控制对这个对象的访问。

外观模式:为子系统的一组接口提供一个一致的界面。

桥接模式:将抽象与实现解耦,以便两者可以独立变化。

组合模式:把多个对象组成树状结构来表示局部与整体。

享元模式:通过共享以便有效的支持大量小颗粒对象。

行为型:(主要对类或对象如何怎样交互和如何分配职责进行描述)

策略模式:定义一个算法的系列,将其各个分类,并且使他们有交互性。

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

观察者模式:在对象期间定义一个一对多的联系,当一个对象改变时,所以其他相关的对象会被通知并且自动刷新。

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

迭代子模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。

责任链模式:为解除请求的发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求,需要将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

命令模式:将一个请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可取消的操作。

备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。

状态模式:让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。

中介模式:包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用,从而使它们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用,保证这些作用可以彼此独立的变化。

解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

按照范围分:

类模式:主要处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来了。

对象模式: 主要处理对象间的关系,在运行时刻是可变的,更具动态性,大部分的模式都是对象模式。