设计模式分类

前言

如果你用的语言能把类型像变量一样赋值并传来传去,很多创建型模式就没用了。
如果你用的语言能把函数像变量一样赋值并传来传去,很多行为模式就没用了。
如果你用的语言 style 反对 class hierarchy,很多结构模式就没用了。

The Lack of Design Patterns in Python Presentation.pdf

 

模式可以分为类模式和对象模式,类模式是用继承,对象模式是用委托

 

1.创建型模式

  社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,

所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:

简单工厂模式(Simple Factory) 、  工厂方法模式(Factory Method) 、 抽象工厂模式(Abstract Factory)、创建者模式(Builder)、

原型模式(Prototype) 、单例模式(Singleton)

 

2.结构型模式

  在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续

程序的维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低,这里有7个具体的结构型模式可供研究,它们分别是:

外观模式(Facade)、适配器模式(Adapter)、代理模式(Proxy)、装饰模式(Decorator)、桥模式(Bridge)、组合模式(Composite)、

享元模式(Flyweight)

 

3.行为型模式

  在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就

会提高,这里有11个具体的行为型模式可供研究,它们分别是:

模板方法模式(Template Method)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(Chain of Responsibility)、

命令模式(Command)、访问者模式(Visitor)、调停者模式(Mediator)、备忘录模式(Memento)、迭代器模式(Iterator)、

解释器模式(Interpreter)

 

4. 区别

(1)而策略模式则属于行为型模式,桥接模式是结构型模式的一种

 

(2)桥接模式表达的主要意义是接口隔离的原则,即把本质上并不内聚的两种体系区别开来,使得它们可以松散的组合,而策略在解耦上还仅仅是某一个算法

的层次,没有到体系这一层次。

 

 

 

 (3)外观与适配器都是对现存系统的封装。

外观会定义新的接口,为现存系统提供一个更为方便的访问接口

适配器则是复用一个原有的接口,适配器是使两个已有的接口协同工作

 

(4)代理与外观的主要区别在于,代理对象代表一个单一对象,外观对象代表一个子系统,代理的客户对象无法直接访问对象,由代理提供单独的目标对象的访问,

而外观对象提供对子系统各元件功能的简化的调用接口。

 

(5)单例是创建型模式,享元是结构型模式。单例模式和享元模式都是数据共用的意思,只是单例是大家共用一个东西,而享元是共用多个东西

(6)模板方法模式与策略模式的都是行为模式,但分别使用继承和委派提供不同的算法行为

(7)装饰器模式与代理模式区别:装饰器关注于在一个对象上动态的添加方法,而代理关注于控制对对象的访问。换句话说,用代理模式,代理

类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理的时候,我们常常在一个代理类中创建一个对象的实例。而使用

装饰器的时候,是将原始对象作为一个参数传给装饰者的构造器。

posted @ 2014-08-12 22:48  等风来。。  Views(379)  Comments(0Edit  收藏  举报
------------------------------------------------------------------------------------------------------------ --------------- 欢迎联系 x.guan.ling@gmail.com--------------- ------------------------------------------------------------------------------------------------------------