浅谈设计模式

面向对象程序设计的设计模式的重要性就像数据结构对于结构化的程序设计一样同等重要。可以使所生成的软件体系结构更加精巧、简洁和易于理解。软件体系结构的好坏直接决定了软件系统的命运,而模式的应用可以帮助建立出色的、稳定的软件体系结构。

设计模式的基本组成大致可以分为4个方面:

  • 模式名称(pattern name):一个助记符,用来表名模式大概的问题、解决方案和效果。
  • 问题(Problem):描述应该在何时使用该模式,
  • 解决方案(solution):描述了设计的组成部分,他们之间的相互关系以及各自的职责和写作方式。
  • 效果(consequence):描述模式实行后的效果及应该注意的权衡问题。

设计模式按目的分类分类:

  • 创建型模式:与对象的创建有关,即:抽象的实例化过程。
  • 结构型模式:如何组合类和对象以获得更大的结构。
  • 行为型模式:涉及到算法及职责间的分配。

设计模式按照范围来分配(指定模式是用于类还是对象):

  • 类模式:处理类与子类之间的关系,通过继承机制来实现,是静态的,在编译阶段已经确定下来。
  • 对象模式:处理对象之间的关系,这些关系可以再runtime时候变化,是动态的。
  • 从某种程度上来说,几乎所有的设计模式都使用到了继承机制,所以“类模式”只指那些集中处理类之间关系的模式,而大部分模式是对象模式。

设计模式的分类


浅谈设计模式_第1张图片

  • adapter:将一个类的接口转化成客户希望的另外一个接口,使得原本由于接口不兼容的类可以一起工作。
  • bridge:将抽象部分与它的实现部分分离,使得它们可以独立地变化。
  • chain of responsibility:为解除请求的发送者和接受者之间的耦合,而使多个对象有机会处理这个请求。将这些对象组成一条链,沿着这条链传递这个请求,直到有一个对象处理它。
  • command:将一个请求封装成一个对象,从而可以使你可以用不同的请求对客户进行参数化。
  • Composite :将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
  • Decorator:动态地给一个对象添加一些额外的职责。就扩展功能而言, Decorator模式比生成子类方式更为灵活。
  • Facade:为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.
  • Mediator:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
  • Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。
  • Observer:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
  • Singleton(单例):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • Strategy(策略):定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。


你可能感兴趣的:(设计模式)