设计模式 - 状态模式(State pattern)

定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 类型 对象行为模式 结构 命令模式由记下几部分组成: 上下文(Context): 定义客户感兴趣的接口,维护一个 ConcreteState 子类的实例,这个实例定义当前状态; 抽象状态(State): 定义一个接口以封装与 Context 的一个特定状态相关的行为; 具体状态(Concr...

设计模式 - 命令模式(Command pattern)

定义 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 类型 对象行为模式 结构 命令模式由以下几部分组成: 抽象命令类(Command): 声明执行操作的接口。调用接收者相应的操作,以实现执行的方法 Execute<; 具体命令类(ConcreteCommand): 创建一个具体命令对象并设定它的接...

设计模式 - 责任链模式(Chain-of-responsibility pattern)

定义 使多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 类型 对象行为模式 结构 责任链模式由以下几部分组成: 抽象处理者(Handler): 定义一个请求的接口。如果需要可以定义个一个方法用来设定和返回后继者对象的引用。 具体处理者(ConcreteHandler): 如果可以...

设计模式 - 迭代器模式(Iterator)

定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。 类型 对象行为模式 适用性 以下情况适用迭代器模式: 访问一个聚合对象的内容而无需暴露它的内部表示; 支持对聚合对象的多种遍历; 为遍历不同的聚合结构提供一个统一的接口(即支持多态迭代) 结构 迭代器模式由记下几部分组成: 迭代器(Iterator): 定义访问和遍历元素的...

设计模式 - 观察者(Observer)

定义 定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。 类型 对象行为模式 结构 观察者模式由以下几部分组成: 目标(Subject): 定义观察者需要实现的职责,提供注册和删除观察者对象的接口。通常被实现为抽象类,仅完成作为观察者所必须实现的职能:管理并通知观察者。 观察者(Observer): 为那些在目标发生改变...

设计模式 - 模板方法(Template Method)

定义 定义一些操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 类型 对象行为模式 结构 模板方法由以下两部分组成: 抽象类(AbstractClass): 定义抽象的原语操作。它的方法包括两类: 基本方法:是由子类实现的方法,并且在模板方法被调用。 模板方法:可以有一个或几个...

设计模式 - 策略模式(Strategy)

定义 定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。策略模式使得算法可以独立于使用它的客户而变化。 类型 对象行为模式 结构 策略模式由以下部分组成: 抽象策略(Strategy): 定义每个策略或算法所必须具备的公共属性的接口,Context 使用此接口来调用 ConcreteStrategy 定义的算法; 具体策略(Concr...

设计模式 - 享元模式(Flyweight)

定义 运用共享技术有效的支持大量细粒度对象。 类型 结构型模式 结构 内部状态与外部状态 享元模式为了解决对象数量多且性质相近的问题,将对象信息分为内部对象和外部对象两个部分: 内部状态(intrinsic): 指对象可共享出来的信息,存储在享元对象内部并且不会随环境改变而改变。 外部状态(extrinsic): 指对象得以依赖的一个标记,是随环境的改变而改变、不可共享的...

设计模式 - 组合模式(Composite)

定义 将对象组合成树形结构以表示”整体-部分”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 类型 结构型模式 结构 组合模式由以下几部分组成: 抽象组件(Component): 可以是接口或抽象类,为叶子组件 (Leaf) 和容器组件 (Composite) 声明接口;在适当的情况下,实现所有类共有接口的缺省行为;同时定义了访问及管理它的子构件的方法,如增加子...

设计模式 - 桥接模式(Bridge)

定义 将抽象部分与实现部分分离,使它们都可以独立的变化。 类型 结构型模式 结构 桥接模式由以下部分组成: 抽象类(Abstraction): 定义抽象类的接口,维护一个指向实现类接口的指针。 扩展抽象类(RefinedAbstraction): 扩充由 Abstraction 定义的接口 实现类接口(Implementor): 定义实现类接口,该接口不一定要与 Abstracti...