GoF 23种设计模式

背景及起源

计算机科学书籍《Design Patterns: Elements of Reusable Object-Oriented Software》首次出版。
这本书的四位作者:Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides,被称为“四人帮”。在科技圈,你会经常看到这个绰号简称为 GoF。尽管 GoF 设计模式这本书出版于 20 多年前,但它仍然是畅销书。

GoF 设计模式类型

Creational Design Patterns 5

Pattern NameDescription
Singleton单例单例模式限制类的初始化,以确保只能创建该类的一个实例。
Factory 工厂模式The factory pattern takes out the responsibility of instantiating a object from the class to a Factory class.
Abstract Factory 抽象工厂模式允许我们为工厂类创建工厂
Builder 建造者一步一步创建对象和最终获取对象实例的方法
Prototype 原型模式从另一个类似的实例创建一个新的对象实例,然后根据我们的要求进行修改。

Structural Design Patterns 7

Pattern NameDescription
Adapter 适配器在两个不相关的实体之间提供接口,以便它们可以一起工作。
Composite 合成模式当我们必须实现部分整体层次结构时使用。例如,由圆形、正方形、三角形等其他部分组成的图表。
Proxy 代理为另一个对象提供代理或占位符以控制对其的访问。
Flyweight 享元缓存和重用对象实例,与不可变对象一起使用。例如,字符串池。
Facade 门面在现有接口之上创建包装(wrapper)接口以帮助客户端应用程序。
Bridge 桥接器桥接设计模式用于将接口与实现分离,并对客户端程序隐藏实现细节。
Decorator 装饰器装饰器设计模式用于在运行时修改对象的功能。

Behavioral Design Patterns 11

Pattern NameDescription
Template Method 模版方法用于创建模板方法存根,并将实现的一些步骤推迟到子类。
Mediator 中介用于在系统中的不同对象之间提供集中的通信媒介
Chain of Responsibility 责任链当处理户端发起的一个请求时,通过一串对象来处理他们,而达到的一种松耦合软件设计的目的
Observer 观察者当您对对象的状态感兴趣并希望在有任何更改时得到通知时很有用。
Strategy 策略客户端在运行时根据实际执行来调用,完成该任务所需要的多种算法 时可以使用策略模式
Command 命令命令模式用于在请求-响应模型中实现解耦。
State 状态当对象根据其内部状态更改其行为时,使用状态设计模式。
Visitor 访问者模式当我们必须对一组相似类型的对象执行操作时使用访问者模式
Interpreter 解释器定义一种语言的语法表示并提供解释器来处理这种语法。
Iterator 迭代器用于提供遍历一组对象的标准方法。
Memento 备忘录当我们想要保存对象的状态以便以后恢复时使用备忘录设计模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GoF 的 23 种设计模式的分类,现在对各个模式的功能进行介绍。 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。 工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。 抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。 建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。 代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。 适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 装饰(Decorator)模式:动态的给对象增加一些职责,即增加其额外的功能。 外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。 享元(Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。 组合(Composite)模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。 模板方法(TemplateMethod)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。 命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。 职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。 状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。 观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。 中介者(Mediator)模式:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。 迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。 备忘录(Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。 解释器(Interpreter)模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值