设计模式(十五)

栏目: 后端 · 发布时间: 5年前

内容简介:在生活中有些事情的流程是一致的,只是其中的某些步骤不一致,这就是一个模板,比如银行办理业务.进门取号 ----> 填写单据 ----> 等待叫好 ----> 窗口办理填写单据这一步骤就是不同的地方.

什么是模板方法模式

在生活中有些事情的流程是一致的,只是其中的某些步骤不一致,这就是一个模板,比如银行办理业务.

进门取号 ----> 填写单据 ----> 等待叫好 ----> 窗口办理

填写单据这一步骤就是不同的地方.

项目中的模板方法模式:一个抽象类中,有一个主方法,在定义多个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,不同子类的重写内容可以不同,通过调用抽象类,实现对子类的调用.

如何实现模板方法模式

例子:

泡咖啡:把水煮沸 --> 沸水冲泡咖啡 --> 咖啡倒进杯子 --> 加糖加奶

泡茶:把水煮沸 --> 沸水浸泡茶叶 --> 茶倒进杯子 --> 加柠檬

分析:冲泡和浸泡都是泡,加糖加奶加柠檬都是加料

创建一个抽象类,在里面定义模版方法和其他的方法

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:交人交心,浇花浇根。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机图形学与几何造型导论

计算机图形学与几何造型导论

戈德曼 / 邓建松 / 2011-9 / 69.00元

《世界著名计算机教材精选:计算机图形学与几何造型导论》是世界著名计算机教材精选之一。《世界著名计算机教材精选:计算机图形学与几何造型导论》共四部分三十章节,内容包括乌龟绘图,应用递归乌龟程序生成分形,分形的奇特性质,仿射变换,仿射几何:二维计算机图形学的连点过程,应用迭代函数系统生成分形,不动点定理及其推论,递归乌龟程序与共形迭代函数系统等。《世界著名计算机教材精选:计算机图形学与几何造型导论》可......一起来看看 《计算机图形学与几何造型导论》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具