黑马程序员技术交流社区

标题: 模板模式的疑惑 [打印本页]

作者: 于世德    时间: 2013-7-9 12:51
标题: 模板模式的疑惑
“定义一个操作的算法骨架,而将一些步骤延迟到子类中”。在学习这个模板模式的过程中,始终没有明白它的优点在哪里,这个模板模式是将变化的需求通过子类来实现,我认为这样就增加了类的维护量,这个与直接在本类中写代码有什么优势呢?
作者: longlangcx    时间: 2013-7-9 19:34
方法是有序的指令组成的,封装的方法可以被复用,但是一旦封装之后,里面的指令序列是固定的。但是有时某方法中的指令序列大体上符合需求可以拿来复用,只是仅仅想改变其中的几条指令。既不能去修改原码,又想要复用那个方法中除去变化的指令之外的其他指令序列,这时就使用模板方法模式。

比如说一个方法用于操作一个人一天的行为:
里面封装的命令有:早上起床---洗漱---吃早饭----学java----吃午饭----学java--- 吃晚饭----学java----------睡觉。一天光学java了,属于玩命学习型。
但是也可以这样:   早上起床---洗漱---吃早饭----学java----吃午饭----学java--- 吃晚饭----去公园跑步---睡觉。 这个算是智体全面发展型。
还可以再来一个:   早上起床---洗漱---吃早饭----学java----吃午饭----学java--- 吃晚饭----打dota---------睡觉。劳逸结合性。
总之就是白天学java晚上自由安排~~一个方法中,只有晚饭后到睡觉前这段是变化的,其他的地方都可以复用。但是方法是一个整体,没办法拆开,所以还得弄N个方法。
但是使用模板方法模式,就可以这样:
设置一个学java方法:早上起床---洗漱---吃早饭----学java----吃午饭----学java--- 吃晚饭----调用夜间安排方法---睡觉。
然后把变化的部分放在这个夜间安排方法里,其他部分就做到了复用。代码直接写在这里方法里还是要修改原码,所以只写个框架,让用户去继承,覆盖此方法,就可以了。
作者: 于世德    时间: 2013-7-10 15:16
longlangcx 发表于 2013-7-9 19:34
方法是有序的指令组成的,封装的方法可以被复用,但是一旦封装之后,里面的指令序列是固定的。但是有时某方 ...

嗯,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2