23种设计模式简述

在上学期的学习当中,我们学习了23种设计模式,但由于自己平时用的不多,所以并不是非常熟练。现在根据自己的理解与书本的知识, 对23种设计模式做一个简单的描述。

  在上学期的学习当中,我们学习了23种设计模式,但由于自己平时用的不多,所以并不是非常熟练。现在根据自己的理解与书本的知识,

对23种设计模式做一个简单的描述。

一、创建型模式:

创建型模式关注对象的创建过程,将对象的创建和对象的使用分离,在使用对象时无须知道对象的创建细节。创建型模式包括工厂方法模式、

抽象工厂模式、建造者模式、原型模式、单例模式。

1.工厂方法模式
  工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂

子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
2.抽象工厂模式
  提供一个创建一系列相关或依赖对象的接口,而无须指定他们具体的类。
3.建造者模式
  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许

用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。
4.原型模式
  用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建另外一个可定制的对象,无须知道

任何创建的细节。原型模式的基本工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象复制原型来实现创建过程。
5.单例模式
  一个类只有一个实例,必须自行创建这个实例,鼻祖自行向整个系统提供实例,身份证号码具有唯一性,这就是单例模式的一个场景。单例模

式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

二、结构型模式:

结构型模式就像搭积木,简单的积木组合成功能强大的结构,类或者对象结合在一起形成更大的结构。结构型模式包括适配

器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。
1.适配器模式
  将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。
2.桥接模式
  将抽象部分与它的实现部分分离,使它们都可以独立地变化。
3.组合模式
  组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性。
4.装饰模式
  动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。
5.外观模式
  外部与一个子系统通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,

这个接口使得这一子接口更加容易使用。
6.享元模式
  运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。
7.代理模式
  给某一个对象提供一个代理,并由代理对象控制对原对象的引用。

三、行为型模式:

行为型模式关注系统中对象之间的相互交互,通过行为型模式,可以更加清楚划分类与对象的职责,行为型模式包括职责链

模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。
1.职责链模式
  避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止
2.命令模式
  将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
3.解释器模式
  定义语法的文法,并且建立一个解释器来解释语言中的句子,这里的“语言”意思是使用规定格式和语法的代码。
4.迭代器模式
  提供一种方法来访问聚合对象,而不是暴露这个对象的内部表示。
5.中介者模式
  用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
6.备忘录模式
  在不破坏封装的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
7.观察者模式
  定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并自动更新。
8.状态模式
  允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
9.策略模式
  定义一系列算法,将每一个算法封装起来,并让他们可以相互替换。
10.模板方法模式
  定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
11.访问者模式
  表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

  设计模式是软件工程当中很常用的知识技能,我们必须熟练地掌握。在平时的学习当中,我们应该多复习设计模式的相关知识,努力扩展自己的知识层面。