设计模式之-模板方法模式
Posted zjting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之-模板方法模式相关的知识,希望对你有一定的参考价值。
场景引入
小镇上新凯乐一家咖啡厅,咖啡师的逻辑:烧水 -> 冲咖啡 ->将饮品倒进杯子里 -> 加糖或者牛奶等。
后来,店家发现人们还有一部分热衷于喝茶,这时客串的咖啡师:烧水 -> 泡茶叶 ->将饮品倒进杯子里 -> 加辅料等。
我们可以清晰的发现:烧水、将饮品倒进杯子的实现是一样的,并且操作的顺序基本都是一样的。只是冲饮料、加辅料的过程需要定制化。
模板类代码实现:
abstract class Template //烧水 private void boilWater() System.out.println("boil water..."); //倒水 private void dumpWater() System.out.println("dump water into cup..."); //模板方法 //煮咖啡|茶叶等 abstract void cook(); //添加辅料等 abstract void addSth(); //业务流程 public void doSth() boilWater(); cook(); dumpWater(); addSth();
茶类代码实现:
class Tea extends Template @Override void cook() System.out.println("cook tea...."); @Override void addSth() System.out.println("add milk into tea...");
咖啡类代码实现:
class Coffee extends Template @Override void cook() System.out.println("cook coffee...."); @Override void addSth() System.out.println("add milk into coffee...");
测试类:
public class Test public static void main(String[] args) new Tea().doSth(); System.out.println("==============="); new Coffee().doSth();
测试结果:
boil water... cook tea.... dump water into cup... add milk into tea... =============== boil water... cook coffee.... dump water into cup... add milk into coffee...
附上图片:
由以上可知,创建一个模板类,实现主要的流程,子类进行复用,其他具体的类进行继承,实现定制化功能!
以上是关于设计模式之-模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章