`
WilliamLiu
  • 浏览: 27093 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

设计模式及其分类

阅读更多

      设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。它使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。

 

      一个模式必须包含以下基本要素:

      1. 模式名称(pattern name)

  一个助记名,它用一两个词来描述模式的问题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计模式允许我们在较高的抽象层次上进行设计。基于一个模式词汇表,我们自己以及同事之间就可以讨论模式并在编写文档时使用它们。模式名可以帮助我们思考,便于我们与其他人交流设计思想及设计结果。找到恰当的模式名也是我们设计模式编目工作的难点之一。

 

  2. 问题(problem)

  描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题部分会包括使用模式必须满足的一系列先决条件。

 

  3. 解决方案(solution)

  描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。

 

  4. 效果(consequences)

  描述了模式应用的效果及使用模式应权衡的问题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。

 

      在GoF的《设计模式》一书中,将设计模式分为三大类,分别是创建型模式、结构型模式和行为模式,其中每一大类下又有众多的设计模式,如下:

 

    一、创建型模式
      1.抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
      2.建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
      3.工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。
      4.原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
      5.单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    二、结构型模式
      1.适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。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):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
    11.访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

 

    在以后的文章中,我将分别展开介绍以上列出的各种设计模式的适用性以及Java的实现代码。

分享到:
评论

相关推荐

    Java中的设计模式及其分类.zip

    Java中的设计模式是一种在软件开发中解决特定问题的最佳实践或模板。它们是对常见设计问题的优秀解决方案的总结,通过复用这些设计模式,可以提高代码的可维护性、可重用性和可扩展性。 设计模式主要分为三大类:...

    尚硅谷设计模式源码笔记课件.zip

    本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...

    软件设计模式及其应用

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

    软件设计模式及其应用研究

    ### 软件设计模式及其应用研究 #### 设计模式:面向对象技术的刀刃 设计模式,作为面向对象技术的核心组成部分,被视为软件设计的“刀刃”。这一概念源自建筑学,由建筑师Alexander首次提出,旨在捕捉并提炼软件...

    JavaScript设计模式与开发实践.pdf

    在本书中,作者还分享了自己在设计模式方面的研究和实践经验,包括设计模式的原型、设计模式的分类、设计模式的应用等,并提供了一些常见的设计模式的示例代码,帮助读者更好地理解和掌握设计模式。 《JavaScript...

    JavaScript 设计模式 azw3

    最后,还探讨了模块化的JavaScript模式、jQuery及其插件中的设计模式。 《JavaScript设计模式》适合专业的Web开发人员和前端工程师阅读。通过阅读本书,他们将能够提高对设计模式的认识,并学会如何将设计模式应用...

    java模式,设计模式,多种设计模式

    #### 四、设计模式的分类 ##### 4.1 J2EE设计模式 J2EE设计模式在过去几年中随着Java开发人员经验的增长而不断发展。这些模式是针对使用各种J2EE技术时可能出现的问题提出的,能够帮助开发人员构建出符合需求的...

    java设计模式与分类

    下面,我们将深入探讨Java设计模式的分类及其重要应用。 首先,设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 1. 创建型模式: 这类模式主要关注对象的创建过程,旨在抽象出对象的创建方式,使得...

    面向对象的设计模式及其应用

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

    设计模式 GOF 23

    本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用。 前 言 本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较...

    设计模式课程设计模板

    设计模式课程设计模板通常包括一系列常见的设计模式及其应用实例,帮助学生或开发者系统地学习和掌握这些模式。 在这个"设计模式课程设计模板"中,我们可以期待学习到以下几个主要的知识点: 1. **设计模式分类**...

    主流设计模式用例(均可单独调试)Java编写

    首先,我们来看看设计模式的基本分类。设计模式通常分为三类:创建型模式、结构型模式和行为型模式。 1. **创建型模式**:这类模式主要关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象...

    java设计模式经典教程

    ### Java设计模式经典教程...通过深入理解这些设计模式及其背后的原理,无论是新手还是有经验的开发者都可以从中获益。希望本文能够帮助读者更好地理解设计模式的概念、分类及应用场景,为进一步学习打下坚实的基础。

    设计模式期末试题下载

    根据给定文件的信息,我们可以提炼出关于设计模式的相关知识点,包括设计模式的概念、目标、特点以及常见的设计模式分类和具体应用。以下是对这些知识点的详细解释: ### 设计模式概念 1. **定义**:设计模式是...

    图解Java设计模式(一)

    本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...

    漫谈设计模式-从面向对象开始

    在本文档中,我们将深入探讨设计模式及其在面向对象编程中的应用。设计模式是软件工程中的一套被广泛认可的最佳实践,它们是一些在特定上下文中反复出现的问题的解决方案。了解和应用设计模式可以帮助开发者写出更加...

    软件设计与体系结构期末复习笔记(xinhua)

    期末复习时,我们需要关注几个核心概念,包括程序的本质、高质量代码的特性、软件设计模式及其分类、UML的作用,以及面向对象设计原则。 首先,程序是解决问题的语句序列,它是计算机执行任务的基础。高质量的代码...

Global site tag (gtag.js) - Google Analytics