Template Method模式
来源:互联网 发布:网络放大器的使用方法 编辑:程序博客网 时间:2024/05/17 23:15
程序1-1
从程序1-4可以看出原先的1-2程序是如何适配到TEMPLATE METHOD模式上去的。但是使用该模式不是都合适的,主要是引用于算法实现上的。通用算法都被封装在基类中,并且通过继承在不同的具体上下文中实现该通用算法。但是这项技术是具有代价的。继承是一种非常强的关系。派生类不可避免地要和它们的基类绑定在一起。不过Strategy模式提供了另外一种可选方案。
Initialize();while(!done()){Idle();}Cleanup();
首先进入初始化。接着进入主循环。在主循环中完成需要做的工作,这些事件或许是处理GUI事件,或许是处理数据库记录。最后,一旦完成了工作,程序就退出主循环,并且在程序终止前做些清除工作。
程序1-2
public class ftocraw{public static void main(String[] args){InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);boolean done = false;while(!done){String fahrString = br.readLine();if(fahrString == null || fahrString.length() == 0)done = true;else{double fahr = Double.parseDouble(fahrString);double celcius = 5.0/9.0*(fahr-32);System.out.println(...);}}System.out.println("exit");}}这个程序符合1-1中的程序结构。我们可以应用TEMPLATE METHOD模式把这个基本结构从程序1-2中分离出来,该模式把通用代码放入一个抽象基类的实现方法中。这个实现方法完成了这个通用算法,但是将所有的实现细节都交付给该基类的抽象方法。
例如,我们可以封装在一个基类中。
程序1-3
public abstract class Application{private boolean isDone = first;protected abstract void init();protected abstract void idle();protected abstract void cleanup();protected void setDone(){isDone = true;}protected boolean done(){return isDone;}public void run(){init();while(!done){idle();}cleanup();}}
从程序1-3可以看出所有的共组都被叫给抽象方法init, idle, 以及cleanup。init方法处理任何所需的初始化工作;idle方法处理程序的主要工作,并且在setDone方法被调用之前被重复调用;cleanup方法处理程序退出前所需的所有清理工作。
现在我们可以通过继承Application来重写程序1-2,只要实现Application中的抽象方法就可以了。
程序1-4
public class ftocTemplateMethod extends Application{private InputStreamReader isr;private BufferedReaderbr;public static void main(String[] args) throws Exception{(new ftocTemplateMethod()).run();}protected void inti(){isr = new InputStreamReader(System.in);br = new BufferedReader(isr);}protected void idle(){...}protected void cleanup(){...}}
从程序1-4可以看出原先的1-2程序是如何适配到TEMPLATE METHOD模式上去的。但是使用该模式不是都合适的,主要是引用于算法实现上的。通用算法都被封装在基类中,并且通过继承在不同的具体上下文中实现该通用算法。但是这项技术是具有代价的。继承是一种非常强的关系。派生类不可避免地要和它们的基类绑定在一起。不过Strategy模式提供了另外一种可选方案。
- Template Method模式
- Template Method模式
- Template Method模式
- Template Method 模板模式
- 设计模式-template method
- TEMPLATE METHOD 模式
- Template Method 模式
- Template Method 模式小结
- Template Method-----设计模式
- template method模式
- Template Method 模式
- Template Method 模式
- Template Method设计模式
- Template Method模式
- Template method模式
- Template Method 模式
- Template Method模式
- Template Method模式
- 窗口产生及消息循环
- Delta3D 例子--爆炸效果,键盘鼠标的使用
- DB2 pureScale问题诊断
- NSScanner 用法
- Stabilizing a Large HBase Cluster
- Template Method模式
- MSSQL 笔记一
- Linux 原子操作
- 如何防止代码腐烂
- Oracle 语言分类(DDL,DML,DCL,TCL)
- Makefile书写规则
- 官方解释:Windows Vista和OpenGL
- MSSQL 笔记二
- MiniOA快速入门