程序员

如何让孩子爱上设计模式 ——24.模板方法模式(Template

2017-03-21  本文已影响96人  coder_pig

标签: 设计模式初涉


描述性文字

终于来到23种设计模式的最后一种:模板方法模式,听名字感觉好像很复杂的样子,
实则不然,先不讲概念,先写个简单的例子,通过例子来感受这个模式。


代码示例

既然是最后一节的了,还是要走一波回忆杀的,还记得之前小猪奶茶店的例子吗?
在工厂方法模式那一章,我们写了奶茶的制作过程过程是如下四步

奶茶的制作过程都是以上四步,我们用模板方法模式来写个例子

先定义一个抽象的模板方法类,这里我还加了一个钩子方法
钩子是一种被声明在抽象类的方法,可以为空或者默认的实现。钩子
的存在可以让子类有能力对算法的不同点进行挂钩,是否需要挂钩由
子类决定。比如这里通过一个标记确定是否需要打包,子类中可以
定义一个方法来调用这个方法,我们在椰果绿茶里重写这个钩子方法。

接着是具体实现类,珍珠红茶 与 椰果绿茶

最后客户端调用

输出结果

好的,例子非常简单,概念这些东西也就不难理解了~


概念相关

定义

定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变
一个算法的结构即可冲定义该算法的某些特定步骤。

两个角色

UML类图

使用场景

优缺点

优点

缺点

需要为每一个基本方法的不同实现提供一个子类,如果父类中可变的基本方法太多,
将会导致类的个数增加,系统更加庞大,设计也更加抽象。


本节代码示例

https://github.com/coder-pig/DesignPatternsExample/tree/master/23.Template%20Method%20Pattern


上一篇下一篇

猜你喜欢

热点阅读