软件设计模式

  软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。算法

  设计模式(英语 design pattern)是对面向对象设计中反复出现的问题的解决方案。这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。这个术语的含义还存有争议。算法不是设计模式,由于算法致力于解决问题而非设计问题。设计模式一般描述了一组相互紧密做用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验能够被初学者和其余设计者掌握。设计模式还为软件重构提供了目标。设计模式

  随着软件开发社群对设计模式的兴趣日益增加,已经出版了一些相关的专著,按期召开相应的研讨会,并且Ward Cunningham为此发明了WikiWiki用来交流设计模式的经验。并发

  模式格式ui

    尽管名称和顺序在不一样的资料中各有不一样,描述模式的格式大体分为如下四个主要部分:设计

    模式名称(Pattern Name):每个模式都有本身的名字,模式的名字使得咱们能够讨论咱们的设计。代理

    问题(Problem):在面向对象的系统设计过程当中反复出现的特定场合,它致使咱们采用某个模式。日志

    解决方案(Solution):上述问题的解决方案,其内容给出了设计的各个组成部分,它们之间的关系、职责划分和协做方式。server

    效果(Consequence):采用该模式对软件系统其余部分的影响,好比对系统的扩充性、可移植性的影响。影响也包括负面的影响。对象

    别名(Also Known As):一个模式能够有超过一个以上的名称。这些名称应该要在这一节注明。接口

    动机(Motivation):该模式应该利用在哪一种状况下是本节提供的方案(包括问题与前因后果)的责任。

    应用(Applicability)

    结构(Structure):这部分经常使用类图与互动图阐述此模式。

    参与者(Participants):这部分提供一份本模式用到的类与物件清单,与它们在设计下扮演的角色。

    合做(Collaboration):描述在此模式下,类与物件间的互动。

    结果(Consequences):这部分应描述使用本模式後的结果、反作用、与交换(trade-off)

    实现(Implementaion):这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。

    例程(Sample Code):示范程式。

    已知应用(Known Uses):业界已知的实作范例。

    相关模式(Related Patterns):这部分包括其余相关模式,以及与其余相似模式的不一样。

  模式列表

  • 基础模式
  • 委托模式
  • 接口模式
  • 代理模式

  

建立模式

抽象工厂模式(Abstract Factory) ,提供一个建立一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
生成器模式 (Builder),将一个复杂对象的构建与它的表示分离,使得一样的构建过程能够建立不一样的表示。
工厂方法模式(Factory Method) ,定义一个用于建立对象的接口,让子类决定将哪个类实例化。Factory Method使一个类的实例化延迟到其子类。
原型模式 (Prototype) ,用原型实例指定建立对象的种类,而且经过拷贝这个原型来建立新的对象。
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

结构模式

适配器模式 (Adapter) ,将一个类的接口转换成客户但愿的另一个接口。Adapter模式使得本来因为接口不兼容而不能一块儿工做的那些类能够一块儿工做。
桥接模式(Bridge) ,将抽象部分与它的实现部分分离,使它们均可以独立地变化。
组合模式(Composite) ,将对象组合成树形结构以表示“部分-总体”的层次结构。它使得客户对单个对象和复合对象的使用具备一致性。
容器模式
修饰模式 (Decorator) ,动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。
扩展性模式
享元模式
管道与过滤器模式
代理模式(Proxy) ,为其余对象提供一个代理以控制对这个对象的访问。

行为模式

责任链模式 (Chain of Responsibility) ,为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
命令模式 (Command) ,将一个请求封装为一个对象,从而使你可用不一样的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操做。
柯里化模式
事件监听器模式
解释器模式
迭代器模式
中介者模式
备忘录模式 (Memento) ,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象以外保存这个状态。这样之后就可将该对象恢复到保存的状态。
观察者模式(Observer) ,定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,全部依赖于它的对象都获得通知并自动刷新。
状态模式 (State) ,容许一个对象在其内部状态改变时改变它的行为。对象看起来彷佛修改了它所属的类。
策略模式 (Strategy) ,定义一系列的算法,把它们一个个封装起来, 而且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
模板方法模式
访问者模式 (Visitor),表示一个做用于某对象结构中的各元素的操做。它使你能够在不改变各元素的类的前提下定义做用于这些元素的新操做。
层次访问者模式

并发模式

模式 Action at a distance
模式 Balking
模式 Guarded suspension
模式 Scheduler
模式 Read write lock
模式 Double checked locking
模式 Disable job requests while running job

实时模式

模式 Scheduled task
模式 User interface
模式 Disable job requests while running job

其余

模型—视图—控制器模式
相关文章
相关标签/搜索