设计模式
文章平均质量分 69
O2AtomLife
这个作者很懒,什么都没留下…
展开
-
23个设计模式
第一部分 接口型模式 1. Adapter(适配器)模式 Adapter模式的宗旨就是,保留现有类所提供的服务,向客户提供接口,以满足客户的期望。 1.1 接口适配 继承老类,实现新类,实现新类的方法里调用老类方法。 1.2 类和对象适配器 继承新类,老类当属性,继承新类方法里调用老类方法。 2. Facade(外观)模式 Facade模式的目...2012-03-29 14:18:23 · 82 阅读 · 0 评论 -
13 行为模式 - 模板方法(Template Method)模式
1.用意 准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法的用意。 2.类图 3.代码 /* * 抽象模板纇 */ public abstract class AbstractClass { public void...原创 2012-08-09 10:21:08 · 113 阅读 · 0 评论 -
14 行为模式 - 观察者(Observer)模式
1.用意 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 2.类图 第一种简单方式 第二种方式 第三种方式 Java的内在支持 3.代码 第一种方式代码: /* * 抽象观察者角色 */ publi...原创 2012-08-09 10:27:08 · 174 阅读 · 0 评论 -
15 行为模式 - 迭代子(Iterator)模式
1.用意 迭代子模式又叫游标模式,可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象。 2.类图 白箱聚集与外禀迭代子 黑箱聚集与内禀迭代子 3.代码 白箱聚集与外禀迭代子 /* * 抽象聚集角色 */ public abstract class Aggregate { public Iterator createIterator() { re...原创 2012-08-17 10:32:12 · 134 阅读 · 0 评论 -
16 行为模式 - 责任链(Chain of Responsibility)模式
1.用意 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理地请求.发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。 2.类图 3.代码 /* * 抽象处理者 */ public abstract class Hand...原创 2012-08-20 10:24:23 · 315 阅读 · 0 评论 -
17 行为模式 - 命令(Command)模式
1.用意 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 2.类图 3.代码 /* * 抽象命令角色 */ public interface Command { void execute(); } /* * 具体命令类 */ publi...原创 2012-08-20 10:29:11 · 89 阅读 · 0 评论 -
18 行为模式 - 备忘录(Memento)模式
需要跟进多重检查点。 1.用意 又叫快照模式或Token模式。 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。 2.类图 白箱实现 黑箱实现 3.代码 白...原创 2012-08-22 10:12:34 · 117 阅读 · 0 评论 -
19 行为模式 - 状态(State)模式
1.用意 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。 2.类图 3.代码 /* * 环境角色 */ public class Context { private State state; public void sampleOperation() { state.sampleOperati...原创 2012-08-22 10:25:46 · 124 阅读 · 0 评论 -
20 行为模式 - 访问者(Visitor)模式
1.用意 封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。 2.类图 3.代码 /* * 模式中的抽象节点 */ public abstract class Node { public abstract void accept(Visitor visitor); } /* *...原创 2012-08-22 10:28:52 · 123 阅读 · 0 评论 -
21 行为模式 - 解释器(Interpreter)模式
1.用意 给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 2.类图 3.代码 z ...原创 2012-08-23 10:18:15 · 117 阅读 · 0 评论 -
12 行为模式 - 策略(Strategy)模式
1.用意 针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换。” 2.类图 3.代码 /* * 环境角色 */ public class Context { private Strategy ...原创 2012-08-07 10:00:59 · 118 阅读 · 0 评论 -
11 结构模式 - 桥梁(Bridge)模式
1.用意 2.类图 3.代码 z 1.用意 将抽象化与实现化脱耦,使得二者可以独立地变化。 2.类图 3.代码 /* * 抽象化角色 */ public abstract class Abstraction { protected Implementor imp; public void operation() { imp.operation...原创 2012-08-01 10:01:16 · 100 阅读 · 0 评论 -
1 抽象工厂(Abstract Factory)模式
1.类图 2.类 Creator package com.javapatterns.abstractfactory; public interface Creator { public ProductA factoryA(); public ProductB factoryB(); } ProductA package com.javapa...2012-07-26 17:54:25 · 118 阅读 · 0 评论 -
3 建造(Builder)模式
1.含义:建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 2.类图 一个产品 多个产品 3.类 /** * 导演者角色 */ public class Director { private Builder builder; public void construct() { ...2012-07-27 09:44:08 · 132 阅读 · 0 评论 -
4 原始模型(Prototype)模式
1. 含义 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象. 2.类图 简单形式 登记形式 3.类代码 简单形式 /** * 抽象原型角色 * */ public interface Prototype extends Cloneable { Object clone(); } /...2012-07-27 10:49:20 · 149 阅读 · 0 评论 -
5 适配器(Adapter)模式
1. 含义 把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 2. 类图 类适配 对象适配 3. 类代码 类适配 /** * 目标角色,期望得到的接口 */ public interface Target { /** * 这是源类也有的方法 */ void sampleOperat...原创 2012-07-27 13:52:44 · 133 阅读 · 0 评论 -
6 合成(Composite)模式
1.含义 合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。 2.类图 安全式和透明式的合成模式 安全式的合成模式: 叶子节点中没有管理聚集的方法,只有合成对象里才有。 透明式的合成模式:管理聚集的方法被移动到了接口中,叶子和合成对象都有这些方法,相对透明但不安全,叶子并不需要那些方法,一般实现了也是空...原创 2012-07-27 14:02:41 · 148 阅读 · 0 评论 -
7 装饰(Decorator)模式
1.含义 装饰模式又名包装(Wrapper)模式,以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 与适配器模式的不同点: 它和委派对象实现同一个接口。 2.类图 3.类代码 /* * 抽象构件角色 */ public interface Component { void sampleOperation(); } /* * 具...原创 2012-07-27 14:03:40 · 104 阅读 · 0 评论 -
8 代理(Proxy)模式
1.含义 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 2.类图 3.代码 /* * 抽象主题角色 */ public abstract class Subject { abstract public void request(); } /* * 真实主题角色 */ public class RealSubject e...原创 2012-07-31 09:48:49 · 410 阅读 · 0 评论 -
09 结构模式 - 享元(Flyweight)模式
1.含义 享元模式以共享的方式高效地支持大量的细粒度对象。 2.类图 单纯享元 复合享元 3.代码 单纯享元 /* * 抽象享元角色 */ abstract public class Flyweight { abstract public void operation(String state); } /* * 具体享元角色 */...原创 2012-07-31 13:47:39 · 108 阅读 · 0 评论 -
10 结构模式 - 门面(Facade)模式
1.含义 外部与一个子系统的通信必须通过一个统一的门面对象进行,这就是门面模式。 2.类图 不使用门面模式的设计 使用门面模式的设计 3.代码 /* * 门面类 */ public class SecurityFacade { private Camera camera1, camera2; private Light light1, light2, ...原创 2012-07-31 13:52:59 · 161 阅读 · 0 评论 -
22 行为模式 - 调停者(Mediator)模式
1.用意 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用。从而使它们可以轻松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。 2.类图 3.代码 /* * 抽象同事类 */ public abstract class Colle...原创 2012-08-23 10:21:37 · 182 阅读 · 0 评论