注:设计模式示例代码下载
外观模式
一、概念
Facade模式也叫外观模式,为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。
二、结构图
三、角色和职责
Facade:为调用方定义简单的调用接口。
Clients:调用者。通过Facade接口调用提供某功能的内部类群。
Packages:功能提供者。指提供功能的类群(模块或子系统)
组合模式
一、概念
通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。
二、结构图
三、角色和职责
Component (树形结构的节点抽象)
- 为所有的对象定义统一的接口(公共属性,行为等的定义)
- 提供管理子节点对象的接口方法
Leaf (树形结构的叶节点):Component的实现子类
Composite(树形结构的枝节点):Component的实现子类
桥接模式
一、概念
基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。
二、结构图
三、角色和职责
Client:Bridge模式的使用者
Abstraction:抽象类接口(接口或抽象类)维护对行为实现(Implementor)的引用
Refined Abstraction: Abstraction子类
Implementor:行为实现类接口 (Abstraction接口定义了基于Implementor接口的更高层次的操作)
ConcreteImplementor:Implementor子类
适配器模式
一、概念
属于构造型模式,通过Adapter模式可以改变已有类(或外部类)的接口形式。
二、结构图
(1)通过继承实现Adapter
(2)通过委让实现Adapter
解释器模式
一、概念
属于行为模式,它是一种特殊的设计模式,它建立一个解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法
二、结构图
三、角色和职责
Context:解释器上下文环境类。用来存储解释器的上下文环境,比如需要解释的文法等。
AbstractExpression:解释器抽象类。 ConcreteExpression:解释器具体实现类。
中介者模式
一、概念
在模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。
二、结构图
三、角色和职责
mediator:中介者类的抽象父类。
concreteMediator:具体的中介者类。
colleague:关联类的抽象父类。
concreteColleague:具体的关联类。
职责链模式
一、概念
该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。
二、结构图
三、角色和职责
Handler :处理类的抽象父类。
concreteHandler :具体的处理类。
迭代模式
一、概念
属于行为模式,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式。
二、结构图
三、角色和职责
Iterator(迭代器接口):该接口必须定义实现迭代功能的最小定义方法集, 比如提供hasNext()和next()方法。
ConcreteIterator(迭代器实现类):迭代器接口Iterator的实现类。可以根据具体情况加以实现。
Aggregate(容器接口):定义基本功能以及提供类似Iterator iterator()的方法。
concreteAggregate(容器实现类):容器接口的实现类。必须实现Iterator iterator()方法。
模板方法模式
一、概念
它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。
二、结构图
三、角色和职责
AbstractClass:抽象类的父类
ConcreteClass:具体的实现子类
templateMethod():
模板方法 method1()与method2():
备忘录模式
一、概念
属于是行为模式,它的作用是保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。
二、结构图
三、角色和职责
Originator(原生者):需要被保存状态以便恢复的那个对象。
Memento(备忘录):该对象由Originator创建,主要用来保存Originator的内部状态。
Caretaker(管理者):负责在适当的时间保存/恢复Originator对象的状态。
状态模式
一、概念
属于行为设计模式。State模式允许通过改变对象的内部状态而改变对象的行为,这个对象表现得就好像修改了它的类一样。
二、角色和职责
Context:用户对象拥有一个State类型的成员,以标识对象的当前状态;
State:接口或基类封装与Context的特定状态相关的行为;
ConcreteState:接口实现类或子类实现了一个与Context某个状态相关的行为。
三、结构图
命令模式
一、概念
属于行为设计模式。Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。
二、角色和职责
Command:Command抽象类。
ConcreteCommand:Command的具体实现类。
Receiver:需要被调用的目标对象。
Invorker:通过Invorker执行Command对象
三、结构图
访问者模式
一、概念
属于行为模式,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作。
二、角色和职责
访问者角色(Visitor):为该对象结构中具体元素角色声明一个访问操作接口。
具体访问者角色(Concrete Visitor)实现每个由访问者角色(Visitor)声明的操作。
元素角色(Element): 定义一个Accept操作,它以一个访问者为参数。
具体元素角色(Concrete Element):实现由元素角色提供的Accept操作。
对象结构角色(Object Structure):这是使用访问者模式必备的角色。
三、结构图