`
董宗磊
  • 浏览: 65491 次
  • 性别: 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)。


分享到:
评论

相关推荐

    设计模式概述及23种设计模式

    设计模式概述及23种设计模式 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式能使编写的程序具有...

    23种面向对象设计模式

    标题提到的“23种面向对象设计模式”涵盖了设计模式的主要分类,这些模式在Java、C++等面向对象编程语言中广泛应用。 1. **创建型模式**(Creational Patterns):这类模式关注对象的创建过程,包括单例模式...

    23种设计模式

    【设计模式概述】 设计模式是软件工程中的一种最佳实践,它是为了解决在软件开发过程中常见问题的经验总结,是经过时间和实践验证的解决方案。设计模式并非具体的代码或库,而是一种描述在某些特定情况下,如何设计...

    23种设计模式.txt

    ### 设计模式概述 设计模式是在软件开发过程中对解决特定问题的一种标准化方法,它们提供了针对常见问题的模板式解决方案。23种设计模式通常被分为三大类:创建型模式、结构型模式和行为型模式。 ### 创建型模式...

    Java -23种设计模式

    Java 设计模式概述和原则 Java 设计模式是软件设计中的一种重要概念,它们是解决特定软件设计问题的通用解决方案。这些设计模式都是由 GoF(Gang of Four)提出的,共有 23 种,涵盖了 creational、structural 和 ...

    java设计模式(23种设计模式大全)

    ### Java设计模式概述 Java设计模式是面向对象软件设计的一种通用可重用解决方案。这些模式提供了一种标准化的方法来解决常见问题,从而使代码更具可维护性和可扩展性。对于Java程序员而言,了解和掌握这些设计模式...

    23种设计模式-UML-类图.docx

    一、设计模式概述 设计模式是一种通用的解决方案,它提供了一种通用的解决方案来解决软件设计中常见的问题。设计模式是一种已经被验证的解决方案,可以重复使用,以解决特定的设计问题。设计模式可以分为三种:创...

    JAVA23中设计模式

    《JAVA23中设计模式》是一份针对Java程序员的指南,旨在通过一系列示例和理论讲解,帮助读者理解和掌握23种经典的设计模式。这些模式被广泛应用于软件开发中,能够提高代码的可维护性、灵活性和可扩展性。 #### 二...

    java23种设计模式

    #### 设计模式概述 设计模式是在软件设计过程中针对常见问题的解决方案。这些模式能够帮助开发人员编写出更高效、更可维护的代码。Java中的23种设计模式通常被划分为三类:创建型模式、结构型模式和行为型模式。 ##...

    23种设计模式解析附实现源码(2nd+Edition).pdf

    ### 23种设计模式解析及其实现源码概览 #### 一、概述 《23种设计模式解析附实现源码(2nd Edition)》是一本深度解析设计模式的经典著作,书中不仅详尽地介绍了GoF所提出的23种设计模式,还提供了具体的实现代码,...

    设计模式(GOF23种设计模式C++的实现).PDF

    ### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 一、概述 本文档提供了一份全面深入的理解GoF(Gang of Four)23种设计模式的指南,并附带了详细的C++实现代码。这份资料不仅对设计模式进行了详尽的解析...

    Java23种设计模式详解

    #### 设计模式概述 设计模式是一种被广泛采用的、标准化的方法,用于解决软件开发过程中遇到的常见问题。通过学习和应用这些模式,开发者能够编写更加灵活、可维护和可扩展的代码。设计模式不仅提高了代码的质量,...

    软件设计模式(java版)习题答案.pdf

    软件设计模式概述 软件设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 面向对象的设计原则 1. 一个...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    ### 设计模式精解——GoF23种设计模式解析及C实现源码 #### 一、概述 本文旨在深入解读由Erich Gamma等四位著名软件设计师所著的经典书籍《设计模式:可复用面向对象软件的基础》(简称GoF)中的23种设计模式,并...

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    根据提供的文档信息,本文...以上就是GoF的23种设计模式的概述及其在C++中的实现方式。每种模式都解决了特定的软件设计问题,并提供了有效的解决方案。通过理解和应用这些模式,可以提高代码的质量、灵活性和可维护性。

    设计模式概述大全.pdf

    ### 设计模式概述详解 #### 一、设计模式的基本概念 设计模式是在软件工程领域内一个极其关键的概念,它不仅提供了对于常见软件开发问题的有效解决方案,同时也为开发者们提供了一套标准化、可复用的设计思路。...

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

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

Global site tag (gtag.js) - Google Analytics