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

23种设计模式概述及分类

阅读更多

常用的设计模式分为如下23种模式:


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

Adapter:将一个类的接口转换成客户希望的另一个接口,使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。

Bridge:将抽象部分与它的实现部分分离,使之可以独立变化。

Chain of Responsibility:为解除请求的发送者和接收者之间的耦合,而使多个对象有机会处理这个请求。将这些请求连成一个链,并沿着这条链传递该请求,直到有个对象处理它。

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

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

Decorator:动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更加灵活。

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

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

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

Interpreter:给定一个语言,定义它的文法的一种表示,并定义一个解释器用于解释特定文法。

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

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

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

Observer:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生变化时依赖于它的所有的对象都得到通知和刷新。

Prototype:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。

Proxy:为其他对象提供一个代理以控制对这个对象的访问。

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

State:允许一个对象再内部状态改变的时候改变它的行为。对象看起来似乎修改了所属的类。

Strategy:定义一系列的算法,把他们封装起来,并可以相互替换,使算法独立于客户。

Template Method:定义一个操作中的算法骨架,而将这些算法的具体实现的代码延迟到子类中完成。

Visitor:标识一个作用于某对象结构中的各元素的操作,在不改变各元素的类的前提下定义作用于这个元素的新操作。


 这23个模式可以分为三大类:

 一,创建模式
       创建模式(Creational Pattern)是对类的实例化过程的抽象化。一些系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建模式描述了怎样构造和封装这些动态的决定。将对象的创建和对象的使用分开
       创建模式分为类的创建模式和对象的创建模式两种。

         1,类的创建模式  类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何创建和放在一起的。

         2, 对象的创建模式 对象的创建模式则把对象的创建过程动态的委派给另一个对象,从而动态地决定客户端将得到哪些具体类的实例,以及这些类的实例是如何被创建和组合在一起的。

创建模式包括以下几种:简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、多例模式、建造模式、原始模型模式等。

简单工厂模式(Simple Factory);

工厂方法模式(Factory Method);

抽象工厂模式(Abstract Factory);

创建者模式(Builder);

原型模式(Prototype);

单例模式(Singleton)。

 

说明 :严格来说,简单工厂模式不是GoF总结出来的23种设计模式之一。


 

二,结构模式
       在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维 护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低。
       结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构。结构模式描述两种不同的东西:类与类实例。根据这一不同,结构模式可以分为类的结构模式和对象的结构模式两种。

         1,类的结构模式  类的结构模式使用集成来把类、接口等组合在一起,以形成更大的结构。当一个类从父类继承并实现某接口时,这个新的类就 把父类的结构和接口的结构结合起来。类的结构模式是静态的。一个类的结构模式的典型例子,就是类形式的适配器模式。

         2,对象的结构模式 对象的结构模式描述怎样把各种不同类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的。

结构模式包括以下几种:适配器模式、缺省适配器模式、合成模式、装饰模式、代理模式、亨元模式、门面模式、桥梁模式等。

 

外观模式(Facade);

适配器模式(Adapter);

代理模式(Proxy);

装饰模式(Decorator);

桥模式(Bridge);

组合模式(Composite);

享元模式(Flyweight)。

 

 三,行为模式

       行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的互相作用的。

              行为模式分为类的行为模式和对象的行为模式两种。

         1,类的行为模式  类的行为使用集成关系在几个类之间分配行为。

         2,对象的行为模式 对象的行为模式则使用对象的聚合来分配行为。

行为模式包括以下几种:不变模式、策略模式、模版方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、解释器模式、调停则模式等。

模板方法模式(Template Method);

观察者模式(Observer);

状态模式(State);

策略模式(Strategy);

职责链模式(Chain of Responsibility);

命令模式 (Command);

访问者模式(Visitor);

调停者模式(Mediator);

备忘录模式 (Memento);

迭代器模式(Iterator);

解释器模式(Interpreter)。


分享到:
评论

相关推荐

    设计模式所有实验及实验报告及代码.zip

    软件设计模式概述 2GoF 的 23 种设计模式 3UML中的类图及类图之间的关系 4开闭原则 5里氏替换原则 6依赖倒置原则 7单一职责原则 8接口隔离原则 9迪米特法则 10合成复用原则 11创建型模式的特点和分类 12单例模式 13...

    设计模式代码和报告

    外观模式 其他模式了解软件设计模式的概念、原则、分类及构成的基本要素。 2. 使学生了解23种设计模式,归纳总结创建型模式、行为型模式和结构型模式的应用情景、所需角色。并根据分类各举一例详细说明要析 3. 使...

    设计模式精解及面试攻略

    第3章介绍设计模式和模式的分类等概念;第4章讨论创造型模式(抽象工厂、工厂方法、生成器、原型和单件模式);第5章讨论结构型模式(适配器、桥接、组成、装饰、外观、享元和代理模式);第6章阐释行为模式(职责链...

    《软件秘笈:设计模式那点事》郑阿奇(编者) -电子工业出版社

    在第1章软件设计模式概述后,从第2章到第24章诠释23个软件设计模式。 1 设计模式概述 1.1 计算机软件的发展现状 1.2 引入设计模式的必要性 1.3 软件设计遵循的基本原则 1.3.1 高内聚、低耦合 1.3.2 面向抽象...

    第3章_设计模式概述.ppt

    设计模式的诞生与发展 设计模式的定义与分类 GoF设计模式简介 设计模式的优点

    kunlingou#lifealien#Java-一览设计模式1

    软件设计模式概述GoF 的 23 种设计模式的分类和功能UML中的类图及类图之间的关系开闭原则——面向对象设计原则里氏替换原则——面向对象设计原则依赖倒置原则—

    模式识别概述

    对于张学工的模式识别的6-10章的概述,模式识别是学习机器学习的基础。

    酒店管理系统源码下载java-pattern:设计模式代码

    ##设计模式概述 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 GOF: 对接口编程而不是对实现编程 优先使用对象组合而不是继承 设计模式在软件开发中的两个主要途径: 1.开发...

    programming-principles:编程原理和设计模式的分类概述

    每个程序员都将从了解编程原理和设计模式中受益。 本概述仅供我参考,也许在设计,讨论或审阅时对您有帮助。 该清单不完整,有时需要在相互矛盾的原则之间进行权衡。 但是,排名较高的原则通常会击败排名较低的原则...

    模式识别研究进展-模式分类

    本文围绕模式识别的核心问题——模式分类概述了近年来在概率密度估计、特征选择和变换、分类器设计等方面的重要研究进展,并分析了最近的发展趋势。

    电子商务毕业设计论文

    本论文着重阐述了BtoC模拟网站的分析、设计与实现,系统主要包括以下几个模块:会员注册及登录、商品分类展示、商品信息检索、购物车、生成订单、订单查询等模块,通过这些模块实现使学生能够直接感受到电子商务的...

    领域驱动设计与模式实战

    2.1 模式概述 2.1.1 为什么要学习模式 2.1.2 在模式方面要注意哪些事情 2.2 设计模式 2.3 架构模式 2.3.1 示例:层 2.3.2 另一个示例:领域模型模式 2.4 针对具体应用程序类型的设计模式 2.5 领域模式 2.6 小结 第3...

    教学大纲1

    第 1 章设计模式概述设计模式的诞生与发展,设计模式的定义与分类,GoF设计模式简介,设计模式的优点220设计模式的定义、分类和优点设计模式的优点以课堂讲授为主

    设计模式-可复用面向对象软件的基础

    概述是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年设计经验的结晶。...本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和语汇。该书为英文版。

    敏捷软件开发:原则、模式与实践.pdf

     ●设计模式:本书中讲述了23个设计模式,并都有具体的实例。讲解的重点在如何在实际的应用中去使用模式,如何根据当前问题的上下文以及约束力去选择最适合的模式,以及何时避免使用模式。  ●UML:本书不是关于 ...

    PetStore中EJB的设计模式.

    PetStore 中EJB 的设计模式............................................................................................................3 1. 概述.............................................................

    PetStore中EJB的设计模式

    PetStore 中EJB 的设计模式.............................3 1. 概述........................................................3 2. 模式分类..................................................4 2.1. Data ...

    模式识别算法MATLAB实现

    全书分为 14 章, 内容包括: 模式识别概述, 特征的选择与优化, 模式相似性测度, 基于概率统计的贝叶斯分类器设计, 判别函数分类器设计, 神经网络分类器设计 (BP 神经网络、 径向基函数神经网络、 自组织竞争神经网络...

    模式识别与智能计算matlab实现

    全书共分为13章,内容包括:模式识别概述,特征的选择与提取,模式相似性测度,贝叶斯分类器设计,判别函数分类器设计,神经网络分类器设计(BP神经网络、径向基函数冲经网络、自组织竞争神经网络、慨率神经网络、对...

    模式分类PatternClassificationSecondEdition中译本-模式分类.part1.rar

    模式分类PatternClassificationSecondEdition中译本-模式分类.part1.rar 计算机科学丛书——模式分类 Pattern Classification,Second Edition 中译本 ---------------------------------------------------------...

Global site tag (gtag.js) - Google Analytics