
Design Pattern
JohnZhang_
天道酬勤
展开
-
模板方法模式(Template Method Pattern)
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤代码:public abstract class CaffeineBeverage { public void prepareRecipe() { boilWater(); brew(); pourInCup(); add原创 2013-07-07 15:14:10 · 2898 阅读 · 0 评论 -
命令模式(Command Pattern)
命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作案例:用户和多调节灯案例,并且用栈实现多撤销代码:图里面没有画出栈,我在User里加了记录命令执行的栈,然后Light里家里灯的几个状态public interface Command { public void execute(); public原创 2013-07-03 15:56:56 · 862 阅读 · 0 评论 -
工厂模式(Factory Pattern)之简单工厂,工厂方法模式(Factory Method Pattern),抽象工厂模式(Abstract Factory Pattern)
《Head First》介绍了工厂模式的3个内容:一、简单工厂简单工厂并非一个模式,反而像是一个编程习惯,其本质是抽出了对象复杂多变的实例化过程到另外一个单独的类,以保证其他代码的不变。通常是实例化的对象是拥有多类型的情况:案例:可以用实例化水果派的例子public class PatternDemo { public static void main(String[]原创 2013-07-02 16:43:03 · 1127 阅读 · 0 评论 -
单件模式(Singleton Pattern)
单件模式:确保一个类只有一个实例,并提供一个全局访问点这个模式在之前开发中已经用得相当多了,这个模式特点是可以延迟实例化的,并且针对资源敏感的对象。最简单的代码例子:public class Sigleton { private static Sigleton sInstance; private Sigleton() { } public static原创 2013-07-02 16:58:43 · 866 阅读 · 0 评论 -
装饰者模式(Decorator Pattern)
设计原理5:类应该对扩展开放,对修改关闭装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案案例,根据《Head First》的例子,写一个茶与调味料- 糖和牛奶的例子:斜体文字的为虚类或虚函数。代码实现:public class PatternDemo { public static void ma原创 2013-07-01 14:25:43 · 871 阅读 · 0 评论 -
观察者模式(Observer Pattern)
设计原理4:为了交互对象之间的松耦合设计而努力观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。案例:类似于邮件主题和邮件订阅者的关系。订阅的主题有了新内容会及时的给订阅者“推”最新的邮件,有一点不同,观察者模式也可以是被“拉”的。注:这两种形式的观察者模式在JDK中广泛使用,是最多的模式之一实现原创 2013-06-30 17:18:30 · 936 阅读 · 0 评论 -
策略模式(Strategy Pattern)
设计原理1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起设计原理2:针对接口编程,而不是针对实现编程设计原理3:多用组合,少用继承选自《Head First 设计模式》:策略模式(Strategy Pattern):定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户案例: 如同《Hea原创 2013-06-28 15:32:15 · 1313 阅读 · 0 评论 -
状态模式(State Pattern)
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像是修改了它的类类图本质上和策略模式一样差别就在于策略模式偏重于外部或者是对象本身对行为的改变,而状态模式是在于对象内部随着时间的变化,事件的发生,对象状态发生变化后而导致的行为发生变化更加简单的说,策略模式偏向于主动改变行为,而状态模式偏向于被动改变行为改自《Head First》课后:糖果贩卖机原创 2013-07-10 16:46:25 · 877 阅读 · 0 评论 -
组合模式(Composite Pattern)
组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合本质上就是以树形的数据结构来完成数据的存储, 而对其的遍历就是对树形结构的遍历。案例:带有子菜单的菜单为了可以让客户以一致的方式处理,我们自然而然的就需要菜单和菜单项多继承同一个抽象基类代码:import java.util.Iterator;p原创 2013-07-09 15:14:50 · 805 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不是暴露其内部的表示案例:菜单项目的打印代码:public interface Menu { public Iterator createIterator();}public interface Iterator { public boolean hasNext(); public Object原创 2013-07-08 17:30:30 · 960 阅读 · 0 评论 -
适配器模式(Adapter Pattern)、外观模式(Facade Pattern)
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类合作无间。本质很简单,用适配器类实现目标接口,然后在实现中用委托调用被适配者的子类的方法去实现目标接口的方法代码:public interface Target { public void request();}public interface Adaptee { public void原创 2013-07-05 16:50:02 · 961 阅读 · 0 评论