新知一下
海量新知
6 6 1 9 4 8 5

重温设计模式系列(四)一句话设计模式总结

架构之家 | 架构师知识系列文章 2020/12/06 17:43

大纲

1、引言

2、设计模式分类

3、创建型模式

4、结构型模式

5、行为性模式

6、文章小结

1、引言

上篇讲到学好设计模式的基础是,掌握面向对象基础知识和设计原则,在原则的基础上产生了设计模式。除此之外,我们要学好设计模式,还需要对设计模式有一个整体的认识。抓取设计模式的核心,在应用时方可得心应手。本文从设计模式分类和一句话设计模式切入,对GOF23种设计模式进行整体介绍。

2、设计模式分类

设计模式按照目的(完成什么工作)分为创建型,结构型和行为性三类。其中创建型有5种,结构型有7种,行为型有11种。

创建型:用于解决对象的创建问题,抽象了实例化过程,使对象的创建和使用解耦,包含单例,工厂方法,抽象工厂,原型,建造者,共5种模式。

结构型:描述如何将类或对象进行组合以实现更大的结构或新的功能,实现多个类之间协同工作,包括代理,外观,适配器,装饰,桥接 ,享元,组合,共7种。

行为型:描述算法和对象之间的交互和职责分配,包括策略, 模板方法,职责链,状态模式,观察者、解释器,命令,中介者,迭代器,访问者,备忘录,共11种。

新知达人, 重温设计模式系列(四)一句话设计模式总结

按照作用范围分为类模式和对象模式,类模式有4种,对象模式有19种。

类模式:用于处理类与子类之间继承关系,这种关系是编译期确定的,运行期是静态的、不变的。包括工厂方法、模板方法、(类)适配器、解释器,共4种。

对象模式:用于处理对象之间的组合或者聚合关系,运行时是可变的、动态的。其他19种+对象适配器模式,属于这一类模式。

新知达人, 重温设计模式系列(四)一句话设计模式总结

本文以第一种分类方式进行介绍GOF23种模式的定义和本质理解。

3、创建型模式

提供了一种在创建对象时隐藏创建逻辑的方式,而不是直接实例化对象,提高了对象创建的灵活性。

单例模式: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。本质是控制对象实例的数目。

工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪个类,工厂方法模式,使一个类的实例化延迟到其子类。本质是实例化(产品的创建)的选择延迟到子类实现。

抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体实现。本质是:选择产品族的创建。

建造者模式: 将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表示。本质是分离整体构建算法和部件的构造。

原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。本质是克隆生成对象

4、结构型模式

这些设计模式关注类和对象的组合。

代理模式: 为其它对象提供一种代理以控制对这个对象的访问,本质是控制对象访问。

外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。本质是:封装交互,简化调用。

适配器模式:将一个类的接口转换为客户希望的另一个接口, 使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。本质是转换匹配,复用功能。

装饰者模式: 动态的给对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。本质是:动态组合。

桥接模式:将抽象部分和实现部分分离,使得两者可以独立变化。本质是分离抽象和实现。

享元模式:运用共享技术有效的支持大量细粒度对象。 本质是分离与共享。

组合模式: 将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象使用具有一致性。本质:统一叶子对象和组合对象。

5、行为型模式

策略模式:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换,本模式使得算法可独立于使用它的客户变化。本质是分离算法,选择实现。

模板方法:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构,即可重定义该算法的某些特定步骤。本质是抽象通用部分和个性部分。通用部分抽象为骨架,个性部分在子类实现。

职责链模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象形成一条链,并沿着这条链条传递该请求,直到有一个对象处理它为止。本质是分离职责,动态组合。

状态模式: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。本质是根据状态来分离和选择行为。

观察者模式: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

解释器模式: 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。本质是分离实现,解释执行。

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

中介者模式: 对象与对象之间存在大量的关联关系,将对象之间的通信关联关系封装到一个中介类中单独处理,从而使其耦合松散,可以独立地改变它们之间的交互。本质是封装交互。

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

访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

备忘录模式: 在不破坏封装性的前提下,捕获一个对象的状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。本质是保存和恢复内部状态。

6、文章小结

本文从整体上将设计模式的分类,每个分类包含的模式以及模式的一句话解释进行了描述。可作为以后学习或应用模式的提纲。

参考资料:一句话设计模式内容摘自《研磨设计模式》

更多“设计模式”相关内容

更多“设计模式”相关内容

新知精选

更多新知精选