Template Method 模式

    回想一下你编写过的所有程序。其中许多可能具有如下的基本循环结构。

    首先进行初始化应用程序。接着进入主循环完成需要做的工作,这些工作或许是处理GUI事件,或许是处理数据库记录。最后,一旦完成了工作,程序就推出主循环,并且在程序中之前做清除工作。

    这种结构非常常见,所以可以把它封装在一个名为Application的类中。之后我们就可以在每个想要编写的新程序中重用这个类。想想!我们再也不需要去编写这个循环了。

    例如我们看到了这种标准程序的所有组成部分,其中初始化TextReader和TextWriter,并且有一个主循环从Console.In中读取华氏温度,并把该温度转换成摄氏温度打印出来。最后打印出一条退出信息。

    这个程序完全符合主循环结构,它先做一些初始化,接着主循环中完成要做的工作,最后做一些清理工作并退出。

    我们可以应用Template Method模式把这个基本结构从ftoc程序中分离出来。该模式把所有通用代码放入一个抽象基类的实现方法中。这个实现方法完成了通用算法,但是将所有的实现细节都交付给该基类的抽象方法。

    这样,例如我们可以把这个主循环结构封装在一个名为Application的抽象基类中。代码如下

 

    该类描绘了一个通用的主循环应用程序。从实现的Run函数中,可以看到主循环。也可以看到所有的工作都被交付给抽象方法Init、Idle以及CleanUp。Init方法处理任何所需的初始化工作;Idle方法处理程序的主要工作,并且在调用setDone方法之前被重复调用;CleanUp方法处理程序退出前所需的所有清理工作。

    我们可以通过继承Application来改写ftoc类,只需要实现Application中的抽象方法即可。例如代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值