浏览 1643 次
锁定老帖子 主题:对设计模式—strategy模式的认识
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-23
strategy是对象行为型模式,主要是定义一系列的算法,把这些算法一个 个封装成单独的类. strategy的实现是由一个抽象类作为一个基类,在基类的基础上生成不同的类,这些类为我们在不同场景提供了不同的选择。 比如说,最近台湾要公投,出现台海危机,我们应如何应付出现的危机那,这时我们提供的多种方案供我们在不同的危机做不同的处理。 public abstract class CrisisEvent { public void happen();//发生危机 public abstract void dealEvent();//应对危机方案 } public class CrisisEventSmallWar extends CrisisEvent { public void dealEvent() { //小规模开战,没有美国等参与 } } public class CrisisEventBigWar extends CrisisEvent { public void dealEvent() { //大规模开战,炸掉美国航母 } } public class CrisisEventExecute { private CrisisEvent _crisisEvent; public CrisisEventExecute(CrisisEvent crisisEvent) { this._crisisEvent = crisisEvent; } public void dealEvent() { _crisisEvent.dealEvent(); } public void changeCrisisEvent(CrisisEvent otherCrisisEvent) { _crisisEvent = otherCrisisEvent; } } public class TestDealEvent() { public static void main(String[]args) { CrisisEventExecute smallCrisisEvent = new CrisisEventExecute(new CrisisEventSmallWar); smallCrisisEvent.dealEvent(); CrisisEventExecute bigCrisisEvent = new CrisisEventExecute(new CrisisEventBigWar); bigCrisisEvent .dealEvent(); } } Strategy 和Factory 有一定的类似,Strategy 相对简单容易理解,并且可以在运行时刻自由切换。Factory 重点是用来创建对象。 Strategy 适合下列场合: 1.以不同的格式保存文件; 2.以不同的算法压缩文件; 3.以不同的算法截获图象; 4.以不同的格式输出同样数据的图形,比如曲线 或框图bar 等 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |