设计模式概述
1.1、设计模式的诞生与发展
-
模式:模式起源于建筑业。
-
模式的定义:模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
-
软件模式:Gof(Gang of Four)将模式的概念引入软件工程领域,这标志着软件模式的诞生。软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式包括设计模式、架构模式、分析模式和过程模式等。软件模式的基本结构由4个部分构成,即问题描述、前提条件(环境或约束条件)、解法和效果。软件模式与具体的应用领域无关,在模式发现过程中需要遵循大三律(Rule of Three),即只有经过3个以上不同类型(或不同领域)的系统的校验,一个解决方案才能从候选模式升格为模式。
-
设计模式:在软件模式领域,目前研究最为深入的是设计模式。
1.2、设计模式的定义与分类
-
Gof对设计模式的定义如下:
设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。
-
设计模式一般包含名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素有以下4个:
- 模式名称(XXXAdapter、XXXFactory)
- 问题
- 解决方案(类图、核心代码)
- 效果
-
分类
-
根据目的分类:
-
创建型,用于创建对象。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展。
- 工厂方法模式(Factory Method)
- 抽象工厂模式(Abstract Factory)
- 建造者模式(Builder)
- 原型模式(Prototype)
- 单例模式(Singleton)
-
结构型,用于处理类或对象的组合
- 适配器模式(Adapter)
- 桥接模式(Bridge)
- 组合模式(Composite)
- 装饰模式(Decorator)
- 外观模式(Facade)
- 享元模式(Flyweight)
- 代理模式(Proxy)
-
行为型,用于描述类或对象怎样交互和怎样分配职责
- 职责链模式(Chain of Responsibility)
- 命令模式(Command)
- 解释器模式(Interpreter)
- 迭代器模式(Iterator)
- 中介者模式(Mediator)
- 备忘录模式(Memento)
- 观察者模式(Observer)
- 状态模式(State)
- 策略模式(Strategy)
- 模板方法模式(Template)
- 访问者模式(Visitor)
-
-
根据范围分类
- 类模式,处理类和子类之间的关系,这些关系通过继承建立,在编译时就被确定下来,是一种静态关系
- 工厂方法模式、(类)适配器模式、解释器模式、模板方法模式
- 对象模式,处理对象间的关系,这些关系在运行时变化,更具动态性
- 抽象工厂模式、建造者模式原型模式、单例模式、(对象)适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式、职责链模式、命令模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、访问者模式
- 类模式,处理类和子类之间的关系,这些关系通过继承建立,在编译时就被确定下来,是一种静态关系
-