设计模式公司荣誉出品
您的设计模式
我们的设计模式
CBF4LIFE
2009 年 5 月
我希望这本书的阅读者具备最基本的代码编写能力,您是一个初级的 coder,可以从中领会到怎么设计
一段优秀的代码;您是一个高级程序员,可以从中全面了解到设计模式以及 Java 的边角技术的使用;您是
一个顶级的系统分析师,可以从中获得共鸣,寻找到项目公共问题的解决办法,呀,是不是把牛吹大了?!
您的设计模式
第2页
目录
第 1 章 策略模式【STRATEGYPATTERN】..........................................................................................................4
第 2 章 代理模式【PROXYPATTERN】...............................................................................................................8
第 3 章 单例模式【SINGLETONPATTERN】......................................................................................................12
第 4 章 多例模式【MULTITIONPAT TERN】......................................................................................................16
第 5 章 工厂方法模式【FACTORYMETHODPATTERN】...................................................................................19
第 6 章 抽象工厂模式【ABSTRACTFACTORYPATTER N】.................................................................................31
第 7 章 门面模式【FACADEPATTERN】........................................................................................................... 44
第 8 章 适配器模式【ADAPTERPATTERN】.....................................................................................................51
第 9 章 模板方法模式【TEMPLATEMETHODPATTERN】.................................................................................63
第 10 章 建造者模式【BUILDERPATTERN】......................................................................................................82
第 11 章 桥梁模式【BRIDGEPATTERN】............................................................................................................97
第 12 章 命令模式【COMMANDPATT ERN】...................................................................................................112
第 13 章 装饰模式【DECORATORPATTERN】..................................................................................................126
第 14 章 迭代器模式【ITERATORPATT ERN】..................................................................................................137
第 15 章 组合模式【COMPOSITEPATTERN】...................................................................................................147
第 16 章 观察者模式【OBSERVERPATT ERN】.................................................................................................175
第 17 章 责任链模式【CHAINOFRESPONSIBILITYPATTERN】.........................................................................194
第 18 章 访问者模式【VISITORPATTERN】.....................................................................................................210
第 19 章 状态模式【STATEPATTERN】............................................................................................................236
第 20 章 原型模式【PROTOTYPEPATTERN】...................................................................................................255
第 21 章 中介者模式【MEDIATORPA T T ERN】.................................................................................................268
第 22 章 解释器模式【INTERPRETERPATTERN】.............................................................................................286
第 23 章 亨元模式【FLYWEIGHTPATTERN】....................................................................................................287
第 24 章 备忘录模式【MEMENTOPAT T ERN】.................................................................................................288
第 25 章 模式大PK...........................................................................................................................................289
第 26 章 六大设计原则....................................................................................................................................290
26.1 单一职责原则【SINGLERESPONSIBILITYPRINCIPLE】............................................................................................290
26.2 里氏替换原则【LISKOVSUBSTITUTIONPRINCIPLE】..............................................................................................297
您的设计模式
第3页
26.3 依赖倒置原则【DEPENDENCEINVERSIONPRINCIPLE】..........................................................................................309
26.4 接口隔离原则【INTERFACESEGREGA TIONPRINCIPLE】..........................................................................................310
26.5 迪米特法则【LOWOFDEMETER】.....................................................................................................................320
26.6 开闭原则【OPENCLOSEPRINCIPLE】..................................................................................................................330
第 27 章 混编模式讲解....................................................................................................................................332
第 28 章 更新记录:.......................................................................................................................................334
相关说明............................................................................................................................... ................................335
相关说明............................................................................................................................... ................................335
第 29 章 后序...................................................................................................................................................336
您的设计模式
第4页
第1章 策略模式【St rategyPat tern】
刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
先说这个场景中的要素:三个妙计,一个锦囊,一个赵云,妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用 JAVA 程序
怎么表现这个呢?我们先看类图:
三个妙计是同一类型的东东,那咱就写个接口:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口
*
*/
public interface IStrategy {
//每个锦囊妙计都是一个可执行的算法
public void operate();
}
您的设计模式
第5页
然后再写三个实现类,有三个妙计嘛:
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 找乔国老帮忙,使孙权不能杀刘备
*/
public class BackDoor implements IStrategy {
public void operate() {
System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 求吴国太开个绿灯
*/
public class GivenGreenLight implements IStrategy {
public void operate() {
System.out.println("求吴国太开个绿灯,放行!");
}
}
package com.cbf4life.strategy;
/**
* @author cbf4Life cbf4life@126.com
* I'm glad to share my knowledge with you all.
* 孙夫人断后,挡住追兵
*/
public class BlockEnemy implements IStrategy {
public void operate() {