`
shake863
  • 浏览: 664753 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常用23种设计模式

阅读更多

23个设计模式列表

【创建型模式】

1.                Abstract Factory    提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

2.                Builder  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

3.                Factory Method   定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。

4.                Prototype   用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

5.                Singleton   保证一个类仅有一个实例,并提供一个访问它的全局访问点。

【结构型模式】

1.                Adapter   将一个类的接口转换成客户希望的另外一个接口。

2.                Bridge   将抽象部分与它的实现部分分离,使它们都可以独立的变化。

3.                Composite  将对象组合成树形结构以表示“部分-整体”的层次结构。

4.                Decorator  动态地给一个对象添加一些额外的职责。

5.                Facade  为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加
                       容易使用。

6.                Flyweight  运用共享技术有效地支持大量细粒度的对象。

7.                Proxy  为其它对象提供一种代理以控制对这个对象的访问。

【行为模式】

1.                Chain of Responsibility   使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。

2.                Command 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,
                   以及支持可撤消的操作。

3.                Interpreter  给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语句中的句子。

4.                Iterator  提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。

5.                Mediator    用一个中介对象来封装一系列的对象交互。

6.                Memento  在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

7.                Observer    定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并
                    自动更新。

8.                State  允许一个对象在其内部状态改变时改变它的行为。

9.                Strategy   定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。

10.              Template Method  定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

11.              Visitor  表示一个作用于某对象结构中的各元素的操作。

 

创建型模式共5种

1.     Abstract Factory
 抽象工厂
 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。(别名:Kit)
 实例描述:

交互图

优缺点

    优点:(1)封装创建过程。客户不用知道类厂是如何创建类实例的,类厂封闭了所有创建的细节。这样可选择不同的创建方法,增加了灵活性。 (2)将客户与具体类隔离,提高了各自的可重用性。
    缺点:Factory类层次与具体类层次通常是平行的(即一一对应的)。增加一个具体类,一般也要相应地增加一个factory类,增加了系统复杂度。

实现

    (1)Abstract Factory类中通常是一组Factory Method的集合。个人认为与Factory Method模式没有本质区别。
    (2)通常可以把工厂作为单件。

2.     Builder
 生成器
 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
各类之间的交互关系如下图所示:

 

3.     Factory Method
 工厂方法
 定义一个用于创建对象的接口,让子类决定实例化哪一个类。使一个类的实例化延迟到其子类。(别名:虚构造器 Virtual Constructor)

 

4.     Prototype
 原型
 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

 

5.     Singleton
 单件
 保证一个类仅有一个实例,并提供一个访问它的全局访问点。

 

结构型模式共7种

1.     Adapter

 适配器
 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。(别名:包装器 Wrapper)

 

2.     Bridge
 桥接
 将抽象部分与它的实现部分分离,使它们都可以独立的变化。(别名:Handle/Body)

例如

 

3.     Composite
 组合
 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

 

4.     Decorator
 装饰
 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。(别名:包装器Wrapper)

 

5.     Fa?ade
 外观
 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

 

6.     Flyweight
 享元
 运用共享技术有效地支持大量细粒度的对象。

这么模式中最重要的概念是内部状态和外部状态。内部状态存储于flyweight中,包含了独立于flyweight场景的外部状态,这些信息使得 flyweight可以被共享;外部状态取决于flyweight场景,并根据场景变化,因此不可共享。用户负责在必要的时候将外部状态传递给 flyweight.


1) Remote Proxy 可以隐藏一个对象存在于不同地址空间的事实;
2) Virtual Proxy 可以进行优化,例如在显示包含大图片的文档时,在初始时可以不显示图片,只显示图片的大小,根据需要再创建图片对象,显示图片;
3) Protection Proxies 可以在访问一个对象是附加一些内务处理,如权限验证等
4) Smart Reference 可以智能地管理代理引用的对象,如对引用的对象记数,没有引用时释放对象;为引用对象加锁等;

 

7.     Proxy
 代理
 为其它对象提供一种代理以控制对这个对象的访问。(别名:Surrogate)

 

行为模式共11种

1.     Chain of Responsibility
 职责链
 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。


CoR的优点:
因为无法预知来自外界的请求是属于哪种类型,每个类如果碰到它不能处理的请求只要放弃就可以。无疑这降低了类之间的耦合性。

缺点是效率低,因为一个请求的完成可能要遍历到最后才可能完成,当然也可以用树的概念优化。 在Java AWT1.0中,对于鼠标按键事情的处理就是使用CoR,到Java.1.1以后,就使用Observer代替CoR

扩展性差,因为在CoR中,一定要有一个统一的接口Handler.局限性就在这里。

 

2.     Command
 命令
 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。(别名:动作 Action 事务 Transaction)

3.     Interpreter
 解释器
 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语句中的句子。

4.     Iterator
 迭代器
 提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。(别名:游标 Cursor)

 

5.     Mediator
 中介者
 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

 

6.     Memento
 备忘录
 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。(别名:Token)

对象交互图

 

   一般情况下,Memento要存取Originator的私有数据,一种方法是把Memento设为Originator的友元,让Memento自己来取数据。另一种方法是Originator自己把自己的私有数据告诉给Memento。

7.     Observer
 观察者
 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。(别名:依赖Dependents,发布-订阅 Publish-Subscribe)

 

8.     State
 状态
 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。(别名:状态对象 Objects for States)

 

9.     Strategy
 策略
 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法可以独立于使用它的客户而变化。(别名:政策 Policy)

 

10.           Template Method
 模板方法
 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。/SPAN>Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

 

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

分享到:
评论

相关推荐

    java常用23种设计模式(含源码解说).rar_java常见设计模式23中(含例子代码)

    这个压缩包“java常用23种设计模式(含源码解说).rar”包含了对Java开发者极其重要的23种经典设计模式的详细讲解和实例代码。 首先,我们要了解设计模式的三大分类:创建型模式、结构型模式和行为型模式。创建型模式...

    java常用23中设计模式

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    Java之23种设计模式解析

    这份资料详细介绍了在Java编程中常用的23种设计模式,旨在提升开发者对于软件设计的理解和应用能力,从而写出更加高效、可维护和可扩展的代码。 首先,我们来看一下23种设计模式的分类:它们可以分为三大类,即创建...

    五种常用的Java设计模式

    五种常用的Java设计模式 Java设计模式是软件开发中的一种重要概念,主要用来解决软件设计中的一些问题。下面将总结五种常用的Java设计模式,分别是单例模式、工厂模式、建造模式、_observer模式和迭代器模式。 ...

    常用的23种设计模式

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

    C# 23种设计模式(中文高清带书签)

    《C# 23种设计模式》是一本深入解析C#编程中常用设计模式的权威指南,对于想要提升代码质量、提高软件可维护性的开发者来说,是不可或缺的参考资料。书中详细介绍了23种经典的设计模式,这些模式是软件工程实践中...

    23常用设计模式的UML

    这个压缩包文件"23常用设计模式的UML"提供了23个经典设计模式的统一建模语言(UML)表示,这对于理解和应用这些模式至关重要。 首先,我们要了解UML是一种标准化的图形表示法,用于系统分析、设计和建模。它通过...

    23种设计模式(C++).pdf

    ### 23种设计模式(C++)精解 #### 一、引言 设计模式作为软件工程领域的一个重要组成部分,对于提高软件的可维护性、可扩展性和可复用性具有重要意义。《23种设计模式(C++)》这本书系统地介绍了GoF(Gang of Four,...

    .NET 23种常用设计模式

    ### .NET 23种常用设计模式 #### 概述 设计模式是在软件工程领域内被广泛采用的一种软件设计思路,旨在解决特定类型的问题。在.NET框架中,这些设计模式同样适用并能帮助开发者构建更加灵活、可扩展及易于维护的...

    c#几种常用的设计模式

    以下是对标题和描述中提到的几种常用C#设计模式的详细解释: 1. **单例模式(Singleton)**: - 单例模式确保一个类只有一个实例,并提供全局访问点。在C#中,通常通过私有化构造函数和静态成员来实现。这样可以...

    Java设计模式大全(23种设计模式).pdf

    Java设计模式大全(23种设计模式).pdf,包含了常用的设计模式,仔细阅读对提高写代码的质量很有帮助!

    浅析23种软件设计模式

    浅析23种软件设计模式 软件设计模式是软件开发中的一种解决方案,旨在解决软件设计中的各种问题。下面我们将对23种常见的软件设计模式进行浅析。 1. 工厂模式:工厂模式的主要思想是将客户类和工厂类分开,客户类...

    23种设计模式幽默见解

    标题与描述中的“23种设计模式幽默见解”指向了软件工程领域中广泛采用的设计模式概念,通过一种轻松幽默的方式解读这些模式。设计模式是软件工程中为解决常见问题而形成的标准化解决方案,它们帮助开发者在面对特定...

    Java中23种设计模式(个人整理实用).doc

    下面是 Java 中 23 种设计模式的详细介绍: 创建型模式 1. 工厂方法模式(Factory Method Pattern) 工厂方法模式是一种创建型设计模式,它提供了一种创建对象的接口,允许客户端创建对象,而无需指定创建的类别...

    常用的5种设计模式介绍

    设计模式概述和五种常用设计模式详解 设计模式是一种通用的解决方案,用于解决软件设计中常见的问题。它们提供了一种灵活、可维护、可扩展的设计方法,能够提高软件的质量和可维护性。在软件设计中,设计模式扮演着...

    23种设计模式彩图-pdf高清版

    《23种设计模式彩图-PDF高清版》是一本专注于设计模式的教材,它不仅仅提供文字性的描述,而是结合了色彩丰富的UML(统一建模语言)图示,帮助读者以更直观的方式理解和记忆这23种设计模式。设计模式是软件工程中...

    JAVA常用设计模式

    JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式JAVA常用设计模式

    精讲23种设计模式

    "精讲23种设计模式" 设计模式是软件开发中一种常用的编程思想,旨在提供通用的可重复使用的解决方案,以解决软件设计中常见的问题。通过本书,我们将总结和讲解了23种设计模式,涵盖了创建型、结构型、行为型三大类...

    软件开发中常用的23种设计模式

    软件开发中常用的设计模式有23种,以下是其中的一些: 1. 单件模式(Singleton Pattern) 单件模式是创建型模式的一种,用于保证一个类仅有一个实例,并提供一个访问它的全局访问点。这种模式通常用于需要控制实例...

    23种设计模式知识要点.zip

    23种常用设计模式:这份学习资料包含了23种常用的设计模式,包括单例模式、工厂模式、观察者模式、代理模式等等。这些设计模式是软件开发中最常用的设计模式,掌握它们可以帮助开发人员提高软件的质量和可维护性。 ...

Global site tag (gtag.js) - Google Analytics