流程标准化,但具体的原料(功能)自己实现。 如:泡茶有以下四个步骤: 1、 烧开水; 2 、把茶放到水杯中; 3、倒入开水; 4、可以什么都不干。 泡咖啡也有以下四个步骤: 1、 烧开水; 2、 把咖啡放到水杯中; 3、倒入开水; 4、 加入糖和牛奶。
因为流程中某一个环节可以省略,我们可以增加钩子函数来确认是否需要定制 ```java public class Coffee extends AbstractTemplate{ protected void putIntoCup() { System.out.println("把咖啡放水杯里"); }
protected void addCondiments() { System.out.println("加糖加奶"); }}java public class Tea extends AbstractTemplate{ protected void putIntoCup() { System.out.println("把茶叶放水杯里"); }
protected void addCondiments() { System.out.println("加点***"); } protected boolean isCustomered() { return false; }}测试下:java // 咖啡制作 AbstractTemplate coffee = new Coffee(); coffee.template(); System.out.println("-------------------"); // 茶制作 AbstractTemplate tea = new Tea(); tea.template(); ``` 结果:
转载于:https://www.cnblogs.com/guomomo/p/10729359.html