设计模式
xiaofancn
这个作者很懒,什么都没留下…
展开
-
设计模式==模板方法(Template Method)
/* * 模板方法(Template Method) * 准备一个抽象类,把部分确定的逻辑定义在某些方法中,用其他抽象方法实现剩余的逻辑。 * 不同子类对这些逻辑有不同的实现。 * * 用法:定义多个抽象操作,定义并实现一个模板方法,将步骤放在这个具体方法里,推迟到子类实现。 * 子类可以改变父类的可变部分,但不能改变模板方法所代表的顶级逻辑。 */ packag...原创 2011-04-13 06:28:31 · 72 阅读 · 0 评论 -
设计模式==适配器模式(Adapter)
/* * * 适配器模式(Adapter) * * * 用一个适配器类把一个接口转成另一个接口。 */ package model; public class TestAdapter { public static void main(String[] args) { USB mouse = new Mouse(); ...原创 2011-04-13 06:40:00 · 68 阅读 · 0 评论 -
设计模式==建造模式(Builder)
/* * 建造模式(Builder) * * * 将一个对象的内部表象和建造过程分割,一个建造过程可以造出不同表象的对象。可简化为模版方法模式. */ package model; public class TestBuilder { public static void main(String[] args) { Builder b =...原创 2011-04-13 06:39:16 · 69 阅读 · 0 评论 -
设计模式==责任链(Chain of Responsibility)
/* * 责任链(Chain of Responsibility) * * * 多个处理器对象连成一串,请求在这条链上传递,由该处理这个请求的处理器来处理。发出请求的客户端并不知道哪个对象处理请求。 */ package model; public class TestChain { public static void main(String[] arg...原创 2011-04-13 06:38:29 · 78 阅读 · 0 评论 -
设计模式==原型模式(ProtoType)
/* * 原型模式(ProtoType) * * 通过一个原型对象来创建一个新对象(克隆)。Java中要给出Clonable接口的实现,具体类要实现这个接口,并给出clone()方法的实现细节,这就是简单原型模式的应用。 浅拷贝:只拷贝简单属性的值和对象属性的地址 深拷贝:拷贝本对象引用的对象,有可能会出现循环引用的情况。可以用串行化解决深拷贝。写到流里再读出来,这时会是一个对象的...原创 2011-04-13 06:37:40 · 70 阅读 · 0 评论 -
设计模式==组合模式(Composite)
/* * * 组合模式(Composite) * * * 把整体和局部的关系用树状结构描述出来,使得客户端把整体对象和局部对象同等看待。 */ package model; import java.util.*; public class TestComposite { public static void main(String[] args)...原创 2011-04-13 06:36:54 · 76 阅读 · 0 评论 -
设计模式==装饰模式(Decorator)
/* * 装饰模式(Decorator) * * * 以对客户透明的方式来扩展对象的功能。 * 用户根据功能需求随意选取组成对象的成分,通过方法的链式调用来实现。 * 可以给对象动态的增加功能,比继承灵活性更大。 */ package model; public class TestDecorator { public static vo...原创 2011-04-13 06:36:15 · 78 阅读 · 0 评论 -
设计模式==工厂方法模式(Factory Method)
/* * 工厂方法模式(Factory Method) * * 多态性工厂模式,创建一个产品的工厂接口,把实际的工作转移到具体的子类。 */ package model; public class TestFactoryMethod { public static void main(String[] args) { AnimalFacto...原创 2011-04-13 06:35:29 · 68 阅读 · 0 评论 -
设计模式==迭代器模式(Iterator)
/* * 迭代器模式(Iterator) * * 类似于集合中的Iterator,使用迭代器来统一不同集合对象的遍历方式, * 隐藏内部细节,用一个抽象迭代器,每个具体的集合类来实现特有的迭代器。 */ package model; public class TestIterator { public static void main(String[] a...原创 2011-04-13 06:34:46 · 78 阅读 · 0 评论 -
设计模式==备忘录模式(Memento)
/* *备忘录模式(Memento) *备忘录对象用来存储另一个对象的快照对象,保存其内部状态,使得可以随时恢复。 * 备忘录角色:保存发起人对象的内部状态,保护内容不被除发起人对象之外的对象获取。 * 窄接口:负责人对象和其他对象看到的接口,只允许把备忘录对象传给其他对象。 * 宽接口:发起人能看到的接口,允许读取内部状态。 * 发起人角色:创建并使用备忘录对象来保存其状...原创 2011-04-13 06:33:59 · 87 阅读 · 0 评论 -
设计模式==单例模式(Singleton)
/* *单例模式(Singleton) *系统中只有一个实例,因此构造方法应该为私有 * 饿汉式:类加载时直接创建静态实例 * 懒汉式:第一次需要时才创建一个实例, * 那么newInstance方法要加同步 饿汉式比懒汉式要好,尽管资源利用率要差。 * 但是不用同步。 */ package model; public class TestSingle...原创 2011-04-13 06:32:24 · 67 阅读 · 0 评论 -
设计模式==状态模式(State)
/* * 状态模式(State) * 在对象内部状态改变时改变其行为。 * 把所研究的对象的行为封装在不同的状态对象中。 */ package model; import static java.lang.System.*; public class TestState { public static void main(String[] args) {...原创 2011-04-13 06:31:17 · 70 阅读 · 0 评论 -
设计模式==策略模式(Strategy)
/* * * 策略模式(Strategy) * 如同LayoutManager和具体的布局管理器的关系,在抽象策略类中定义方法,在具体策略子类中实现。 * 客户代码根据不同的需要选择相应的具体类,例如电子商务中多种价格算法。 * 一种策略一旦选中,整个系统运行期是不变化的 */ package model; public class TestStrate...原创 2011-04-13 06:29:55 · 117 阅读 · 0 评论 -
设计模式==抽象工厂模式(Abstract Factory)
/* * * 抽象工厂模式(Abstract Factory) * * 针对多个产品等级的情况,而工厂方法模式针对单一产品等级的情况。 */ package model; import java.awt.Button; import java.awt.Component; import java.awt.FlowLayout; import java.awt...原创 2011-04-13 06:40:39 · 80 阅读 · 0 评论