内容简介:在生活中有些事情的流程是一致的,只是其中的某些步骤不一致,这就是一个模板,比如银行办理业务.进门取号 ----> 填写单据 ----> 等待叫好 ----> 窗口办理填写单据这一步骤就是不同的地方.
什么是模板方法模式
在生活中有些事情的流程是一致的,只是其中的某些步骤不一致,这就是一个模板,比如银行办理业务.
进门取号 ----> 填写单据 ----> 等待叫好 ----> 窗口办理
填写单据这一步骤就是不同的地方.
项目中的模板方法模式:一个抽象类中,有一个主方法,在定义多个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,不同子类的重写内容可以不同,通过调用抽象类,实现对子类的调用.
如何实现模板方法模式
例子:
泡咖啡:把水煮沸 --> 沸水冲泡咖啡 --> 咖啡倒进杯子 --> 加糖加奶
泡茶:把水煮沸 --> 沸水浸泡茶叶 --> 茶倒进杯子 --> 加柠檬
分析:冲泡和浸泡都是泡,加糖加奶加柠檬都是加料
创建一个抽象类,在里面定义模版方法和其他的方法
public abstract class BubbleBeverage {
//定义模版方法,注意需要final修饰,不允许外界修改模版框架
public final void beverageTemplate(){
//1.煮沸水
boilWater();
//2.泡制
brew();
//3.倒入杯子
pourInCup();
//4.加料
addSomething();
}
//需要在子类中实现的方法
protected abstract void addSomething();
private void pourInCup() {
System.out.println("将饮料倒入杯子中");
}
//需要在子类中实现的方法
protected abstract void brew();
private void boilWater() {
System.out.println("将水煮沸");
}
}
模版类的子类
子类A:
//定义一个子类实现茶的泡制
public class TeaBeverage extends BubbleBeverage{
@Override
protected void addSomething() {
System.out.println("加柠檬");
}
@Override
protected void brew() {
System.out.println("用沸水浸泡茶叶");
}
子类B:
import cn.wxdl.abstracts.BubbleBeverage;
//定义一个子类实现咖啡的制备
public class CoffeeBeverage extends BubbleBeverage{
@Override
protected void addSomething() {
System.out.println("加糖加奶");
}
@Override
protected void brew() {
System.out.println("用沸水冲泡咖啡");
}
}
测试类:
public class TestDemo {
public static void main(String[] args) {
testCoffee();
System.out.println("-------------------------");
testTea();
}
public static void testCoffee(){
BubbleBeverage beverage = new CoffeeBeverage();
System.out.println("开始制备咖啡");
beverage.beverageTemplate();
System.out.println("咖啡制备完成");
}
public static void testTea(){
BubbleBeverage beverage = new TeaBeverage();
System.out.println("开始泡制茶");
beverage.beverageTemplate();
System.out.println("茶泡制完成");
}
}
复制代码
模板方法模式的特点
算法或操作遵循相似的逻辑
重构时(将相同的代码抽取到父类中)
重要,复杂的算法,核心算法设计为模版算法
优点:
1.封装性好
2.复用性好
3.屏蔽细节
4.便于维护
总结
模版方法模式的实现要素:抽象基类和具体子类
抽象基类中有共性的方法(已实现)和抽象方法(只知道原则不知道细节),还有模版方法
note:交人交心,浇花浇根。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
家事的撫慰(下冊)
Cheryl Mendelson / 甘錫安 / 大家出版社 / 2014-1-28 / NT$520
家事界暢銷參考書籍 各大媒體一致盛讚 亞馬遜讀者四星半高度評鑑 誠品、博客來、香港誠品 三選書 家務界經典暢銷書│各大媒體一致盛讚│讀者四星半高度評鑑 「這個世代最重要的家事著作!」──《大西洋月刊》 恢復家務打理者應有的地位,賦予應有的尊嚴和價值。 以生理的勞動、心力的投入,以及正確的持家知識,換得情感上的溫暖與安全。 .家裡空氣有異味,用香味來......一起来看看 《家事的撫慰(下冊)》 这本书的介绍吧!