设计模式——怎么就给分成三类了呢?
2017-08-23 21:07
281 查看
转自: http://blog.csdn.net/daybreak1209/article/details/21986715
大家都说设计模式可根据目的划分为:
1、创建型(creational):主要用于处理对象的创建,实例化对象
2、结构型(structural):处理类或对象间的组合
3、行为型(behavioral):描述类或对象怎样进行交互和职责分配
但是让我疑问的是,为什么大家都约定俗成的把n个设计模式分门别类到这三个类别中去呢?分类的具体依据呢?创建型就真的用来创建对象?结构型就组合对象吗?它是怎么创建怎么组合的呢?
带着这些问题,笔者再度整理了一下思绪,提出几个特征明显的给您娓娓道来~至于针对每一类模式的进一步总结,敬请期待接下来的博文。
创建型:
1、简单工厂(本不属于经典模式,列此尽供对比参考):创建一个工厂,通过增加分支语句的方式来增加创建新的对象。
2、工厂方法模式:通过定义一个创建对象的接口来对类进行实例化。不用再对客户端代码进行修改,增加新的实例化。
3、抽象工厂模式:通过定义一系列创建对象的接口来对创建对象。当类和操作类不断增多,不止一个时,单纯的创建一个接口实例化对象(工厂方法模式)已经不足以解决问题。这时便需要在此基础之上,创建一系列接口用于实例化,便可不用指定具体实例化那哪一个类。
4、单例模式:遵循“计划生育”政策,防止超生,单例模式保证让一个类仅拥有一个实例。便可保证只有这一个实例可以被创建,被访问。
5、建造者模式:保证在创建对象时,将产品的内部组成与生成过程隔离开来,使用同样的创建过程便可以创建出胖瘦不同的对象。
6、原型模式:利用原型实例来“克隆”创建新的对象。
结构型:
1、装饰模式:系统需要新的功能时,避免在主类中添加新字段,把某些特殊的功能(装饰物)选择性的单独放到一个类中。这就属于类与类之间的组合结构,怎么组合,那种装饰方式。故属于结构型模式。
2、适配器模式:姚明在NBA需要翻译,老外来中国也需要翻译。将一个类的接口转换成另一个希望的接口,适配器的作用即在此。
行为型:
1、观察者模式:当几个对象之间,一个改变需要同时改变多个对象时,利用观察者模式解除耦合,让耦合双方都依赖于抽象。就像老板回来了,偷懒的同事应该依赖的是前台秘书这个抽象类,而不应依赖于具体的名为“小白”的秘书。这都是针对于对象间不同行为的职责分配而使用的模式。
看到这里,写到这里,貌似巨人们对设计模式进行这样的分类确实是有实际依据的。疑惑的问号也可稍稍远行些了。以上仅为三类模式中部分典型代表,具体各类模式总结,详见下回分解,敬请期待。
大家都说设计模式可根据目的划分为:
1、创建型(creational):主要用于处理对象的创建,实例化对象
2、结构型(structural):处理类或对象间的组合
3、行为型(behavioral):描述类或对象怎样进行交互和职责分配
但是让我疑问的是,为什么大家都约定俗成的把n个设计模式分门别类到这三个类别中去呢?分类的具体依据呢?创建型就真的用来创建对象?结构型就组合对象吗?它是怎么创建怎么组合的呢?
带着这些问题,笔者再度整理了一下思绪,提出几个特征明显的给您娓娓道来~至于针对每一类模式的进一步总结,敬请期待接下来的博文。
创建型:
1、简单工厂(本不属于经典模式,列此尽供对比参考):创建一个工厂,通过增加分支语句的方式来增加创建新的对象。
2、工厂方法模式:通过定义一个创建对象的接口来对类进行实例化。不用再对客户端代码进行修改,增加新的实例化。
3、抽象工厂模式:通过定义一系列创建对象的接口来对创建对象。当类和操作类不断增多,不止一个时,单纯的创建一个接口实例化对象(工厂方法模式)已经不足以解决问题。这时便需要在此基础之上,创建一系列接口用于实例化,便可不用指定具体实例化那哪一个类。
4、单例模式:遵循“计划生育”政策,防止超生,单例模式保证让一个类仅拥有一个实例。便可保证只有这一个实例可以被创建,被访问。
5、建造者模式:保证在创建对象时,将产品的内部组成与生成过程隔离开来,使用同样的创建过程便可以创建出胖瘦不同的对象。
6、原型模式:利用原型实例来“克隆”创建新的对象。
结构型:
1、装饰模式:系统需要新的功能时,避免在主类中添加新字段,把某些特殊的功能(装饰物)选择性的单独放到一个类中。这就属于类与类之间的组合结构,怎么组合,那种装饰方式。故属于结构型模式。
2、适配器模式:姚明在NBA需要翻译,老外来中国也需要翻译。将一个类的接口转换成另一个希望的接口,适配器的作用即在此。
行为型:
1、观察者模式:当几个对象之间,一个改变需要同时改变多个对象时,利用观察者模式解除耦合,让耦合双方都依赖于抽象。就像老板回来了,偷懒的同事应该依赖的是前台秘书这个抽象类,而不应依赖于具体的名为“小白”的秘书。这都是针对于对象间不同行为的职责分配而使用的模式。
看到这里,写到这里,貌似巨人们对设计模式进行这样的分类确实是有实际依据的。疑惑的问号也可稍稍远行些了。以上仅为三类模式中部分典型代表,具体各类模式总结,详见下回分解,敬请期待。
相关文章推荐
- 设计模式——怎么就给分成三类了呢?
- 设计模式用过哪些,应用场景是什么;单例模式有几种实现方式,代码怎么写?
- 三类,23种设计模式,速记理解法!PHP
- 怎么选择设计模式
- 设计模式(一):从三类模式六种原则看设计模式
- (入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?
- 笔试怎么过(4)C#笔试和设计模式
- 设计模式的学习(一)面向对象的原则 _ 面对变化应该怎么做
- 对MVC的理解?为什么要用MVC?在Cocoa中MVC是怎么实现的?你还熟悉其他的OC设计模式或别的设计模式吗
- 设计模式你怎么看?--简单工厂模式
- 你所学习的设计模式到底有什么用?到底怎么用?
- 设计模式你怎么看?--策略模式
- 【设计模式】C++单例模式的几种写法——Java自动加载内部类对象,C++怎么破?
- GOF 23种设计模式 怎么分类
- 怎么选择设计模式
- (转)23种设计模式(4):建造者模式(实例代码并不怎么好)
- 三类设计模式UML图
- 我是如何学习设计模式的一:.NET C# 委托定天下,学好委托事件,设计模式精髓可以理解三分之一,怎么说也是三分天下之势了
- 怎么选择设计模式
- 设计模式之策略模式——“要怎么做,到时候再说”