【设计模式】模板模式
请客吃饭
首先,这个请客吃饭就相当于一个类,然后到了饭店要进行点菜,点完菜要一起吃饭,吃完饭要去结账。这其中的点菜、吃饭、结账就相当于类中的三个方法。所以知识点就来了。。。
这个过程中点菜和结账这两个环节都必不可少,所以点菜和吃饭这两个方法就相当于一个模板,通用于所有人,不管你是在国外还是国内,也不管你吃的是中餐还是西餐,都会用到这个模板。
而吃什么就不一样了,有的人吃的是面条,又有的人吃的是满汉全席,所以吃饭这个方法就不能做为通用的模板,将它设置为一个虚方法放到请客吃饭的父类中,让其它子类去调用它。
模板确定了,剩下的就让顾客自己选吃什么就好了
为了更加清楚的说明,我就不得不拿出我隐藏多年的美术能力来为大家画上一幅图
抄题抄错了咋办
背景:老师让学生把黑板上的题抄下来,然后把答案写在题下
这里就可以看出,不管这个班级里有多少人,是学渣还是学霸,他们抄的题都是一样的, 唯一不同的就是每个人的答案不一样。这样的话问题也就来了,如果有个别人将黑板上的题抄错的话,他做的在对也白费功夫。
这时候老师就要出一份试卷,打印多份,让学生填答案就可以了。这份试卷就是模板,建立一个父类,在建立学生子类,调用父类中模板,直接写答案就好了
模板方法模式
定义:一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
结构图: