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