设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码的可靠性。
设计模式一般包含模式名称、问题、目的、解决方案、效果等组成要素,其中关键要素是模式名称,以便我们更好地理解模式并且方便开发人员之间的交流,绝大多数模式都是根据其功能或者模式结构来命名的;问题描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因;解决方案描述了一个设计模式的组成部分,以及这些组成部分之间的相互关系、各自的职责和协作方式,通常解决方案通过UML类图和核心代码进行描述;效果描述了模式优缺点以及在应用模式时应权衡的问题。
设计模式,其实是在尽量的遵循面向对象的几大基本原则。面向对象中,有几个基本原则,下面分别介绍下:
一个类只负责一个功能领域中的相应原则。或者可以定义为:就一个类而言,应该只哟一个引起它变化的原因。
一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
所有引用基类(父类)的地方必须能透明的使用其子类的对象。
抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
使用多个专门的接口,而不是使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
尽量使用组合对象,而不是使用继承来达到复用的目的。
一个软件实体应当尽可能少与其他实体发生相互作用。
从设计模式的用途上对模式进行划分,可以分成三类设计模式;第一类:创建型设计模式;第二类:结构性设计模式;第三类:行为型设计模式。
类型 |
模式名称 |
学习难度 |
使用频率 |
创建型模式 |
单例模式 |
简单 |
频繁 |
简单工厂模式 |
一般 |
一般 |
|
工厂方法模式 |
一般 |
一般 |
|
抽象工厂模式 |
稍难 |
较少 |
|
原型模式 |
稍难 |
较少 |
|
建造者模式 |
难 |
较少 |
|
结构型模式 |
适配器模式 |
简单 |
频繁 |
桥接模式 |
难 |
较少 |
|
组合模式 |
一般 |
频繁 |
|
外观模式 |
简单 |
频繁 |
|
享元模式 |
稍难 |
较少 |
|
代理模式 |
一般 |
频繁 |
|
装饰模式 |
一般 |
频繁 |
|
行为型模式 |
职责链模式 |
一般 |
频繁 |
解释器模式 |
难 |
较少 |
|
迭代器模式 |
一般 |
频繁 |
|
中介者模式 |
一般 |
一般 |
|
备忘录模式 |
一般 |
较少 |
|
观察者模式 |
一般 |
频繁 |
|
状态模式 |
一般 |
频繁 |
|
策略模式 |
一般 |
频繁 |
|
模板方法模式 |
简单 |
频繁 |
|
访问者模式 |
较难 |
一般 |
|
命令模式 |
一般 |
频繁 |
下面给出每个设计模式的定义、相关类图
单例模式
确保一个类只有一个实例,而且自行实例化并且向整个系统提供这个实例。
简单工厂模式
定义一个工厂类,它可以根据参数的不同返回不同的实例,被创建的实例通常都具有共同的父类。
工厂方法模式
定义一个用于创建对象的接口,让子类决定将哪一个类实例化。
抽象工厂模式
提供一个创建一系列相关或者相互依赖对象的接口,而无须指定实现他们具体的类。
由于时间关系,并没够一一总结。具体代码的列子,需要的可以联系我,我直接发邮件给你吧
原文地址:http://blog.csdn.net/u010469003/article/details/27567775