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