设计模式——模板方法模式(附代码示例)

一. 概念

        模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

        简单说,模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。

二. 原理类图

       

设计模式——模板方法模式(附代码示例)

        AbstractClass:抽象类,类中实现了模板方法,定义了算法的骨架,具体子类需要去实现其它的抽象方法operationr2, 3, 4

        ConcreteClass:实现抽象方法operationr2, 3, 4,以完成算法中特点子类的步骤

三. 代码示例

        以制作豆浆为例,制作豆浆的流程为选材——添加配料——浸泡——放到豆浆机打碎,通过添加不同的配料,可以制作出不同口味的豆浆。选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的,因此可以使用模板方法模式。

类图

设计模式——模板方法模式(附代码示例)         SoyaMilk抽象类,定义模板方法,使用final防止子类覆盖,选材、浸泡、打碎方法一致直接实现,addIngredients()不相同采用抽象方法,表示制作豆浆

         在模板方法模式的父类中,我们可以定义一个方法,它默认不做任何事,子类可以视情况要不要覆盖它,该方法称为“钩子”。isAddIngredients(),钩子方法决定是否添加调料

        RedBeanSoyaMilk类,继承SoyaMilk抽象类,具体实现addIngredients() ,表示制作红豆豆浆

         PeanutSoyaMilk类,继承SoyaMilk抽象类,具体实现addIngredients() ,表示制作花生豆浆

         PureSoyaMilk类,继承SoyaMilk抽象类,重写钩子方法,表示不添加调料制作纯豆浆

         Client类,客户端

 输出结果

设计模式——模板方法模式(附代码示例)

来源:枫陵

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月21日
下一篇 2022年4月21日

相关推荐