您的位置:首页 > 其它

大话设计模式之模板方法模式(摘录)

2013-07-15 15:45 176 查看

1、辉煌工程——制造悍马

周三,9:00,我刚刚坐到位置上,打开电脑准备开始干活。

“小三,小三,叫一下其他同事,到会议室,开会”,老大跑过来吼,带着坏笑。还没等大家坐稳,老大就开讲了:

“告诉大家一个好消息,昨天终于把牛叉模型公司的口子打开了,要我们做悍马模型,虽然是第一个车辆模型,但是我们有能力、有信心做好,我们一定要……(中间省略20分钟的讲话,如果你听过领导人的讲话,这个你应该能够续上)”

动员工作做完了,那就开始压任务了。“这次时间是非常紧张的,只有一个星期的时间,小三,你负责在一个星期的时间把这批10万车模(注:车模是车辆模型的意思,不是香车美女那个车模)建设完成…”

“一个星期?这个……是真做不完,要做分析,做模板,做测试,还要考虑扩展性、稳定性、健壮性等,时间实在是太少了”还没等老大说完,我就急了,再不急我的小命就折在上面了!

“那这样,只做最基本的实现,不考虑太多的问题,怎么样?”老大又把我弹回去了。

“只作基本实现?那……”

唉,领导已经布置任务了,那就开始死命地做吧,命苦不能怨政府,点背不能怪社会呀!然后就开始准备动手做,在做之前先介绍一下我们公司的背景,我们公司是做模型生产的,做过桥梁模型、建筑模型、机械模型,甚至是一些政府、军事的机密模型,这个不能细说,绝密。公司的主要业务就是把实物按照一定的比例缩小或放大,用于试验、分析、量化或者是销售,等等,上面提到的牛叉模型公司专门销售车辆模型的公司,自己没有生产企业,全部是代工。我们公司是第一次从牛叉模型公司接单,那我怎么着也要把活干好,可时间有限,任务量又巨大,怎么办?

既然领导都说了,不考虑扩展性,那好办,先按照最一般的经验设计类图,如图1-1所示

class Program
{
static void Main(string[] args)
{
HanmaH1 h1 =new HanmaH1();
h1.run();
HanmaH2 h2 = new HanmaH2();
h2.run();
Console.ReadLine();
}
}


View Code

1.2 模板方法模式的定义

模板方法模式(Template Method Pattern)是如此的easy,以致让你感觉你已经能够掌握其精髓了。其定义如下:

Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

模板方法模式的通用类图如图1-3所示。



图1-3 修正后的悍马车模类图

模板方法模式确实非常简单,仅仅使用了Java的继承机制,但是它是一个应用非常广泛的模式。其中,AbstractClass叫做抽象模板,它的方法分为两类:

基本方法

基本方法也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。

模板方法

可以有一个或几个,一般是一个具体方法,也就是一个骨架,实现对基本方法的调度,完成固定的逻辑。

注意为了防止恶意的操作,一般模板方法都加上final关键字,不允许被覆写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: