A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于世德 中级黑马   /  2013-7-9 12:51  /  1203 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

“定义一个操作的算法骨架,而将一些步骤延迟到子类中”。在学习这个模板模式的过程中,始终没有明白它的优点在哪里,这个模板模式是将变化的需求通过子类来实现,我认为这样就增加了类的维护量,这个与直接在本类中写代码有什么优势呢?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

2 个回复

倒序浏览
方法是有序的指令组成的,封装的方法可以被复用,但是一旦封装之后,里面的指令序列是固定的。但是有时某方法中的指令序列大体上符合需求可以拿来复用,只是仅仅想改变其中的几条指令。既不能去修改原码,又想要复用那个方法中除去变化的指令之外的其他指令序列,这时就使用模板方法模式。

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

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
longlangcx 发表于 2013-7-9 19:34
方法是有序的指令组成的,封装的方法可以被复用,但是一旦封装之后,里面的指令序列是固定的。但是有时某方 ...

嗯,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马