内容简介:在生活中有些事情的流程是一致的,只是其中的某些步骤不一致,这就是一个模板,比如银行办理业务.进门取号 ----> 填写单据 ----> 等待叫好 ----> 窗口办理填写单据这一步骤就是不同的地方.
什么是模板方法模式
在生活中有些事情的流程是一致的,只是其中的某些步骤不一致,这就是一个模板,比如银行办理业务.
进门取号 ----> 填写单据 ----> 等待叫好 ----> 窗口办理
填写单据这一步骤就是不同的地方.
项目中的模板方法模式:一个抽象类中,有一个主方法,在定义多个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,不同子类的重写内容可以不同,通过调用抽象类,实现对子类的调用.
如何实现模板方法模式
例子:
泡咖啡:把水煮沸 --> 沸水冲泡咖啡 --> 咖啡倒进杯子 --> 加糖加奶
泡茶:把水煮沸 --> 沸水浸泡茶叶 --> 茶倒进杯子 --> 加柠檬
分析:冲泡和浸泡都是泡,加糖加奶加柠檬都是加料
创建一个抽象类,在里面定义模版方法和其他的方法
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设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
在你身边,为你设计
腾讯公司用户研究与体验设计部 / 电子工业出版社 / 2013-1 / 69.00元
设计属于所有人,也意在为所有人使用,这既是设计的价值,也是设计的责任。本书内容包括:设计理念、设计方法、用户研究、体验设计、设计流程和工具,以及团队成长与管理等方面的知识与经验分享。一起来看看 《在你身边,为你设计》 这本书的介绍吧!