深入浅出设计模式九——模板方法模式(行为型)

模板方法模式:

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

UML图:

示例:

在星巴兹有泡咖啡和泡茶两种饮料

他们的泡制方法如下:

看一下解析的类图:

具体代码:

package com.lwf.templatemethod;

public abstract class CoffeineBeverage {

	//模板方法:声明为final是不想子类覆盖
	final void prepareRecipe(){
		boilWater();//煮水
		brew();//用沸水泡
		pourInCup();//把泡好的饮料倒进杯子里
		addCondiments();//加调味料
	}
	
	abstract void brew();
	abstract void addCondiments();
	void boilWater(){
		System.out.println("boil Water");
	}
	void pourInCup(){
		System.out.println("Pouring into cup");
	}
}

 

package com.lwf.templatemethod;

public class Tea extends CoffeineBeverage {

	@Override
	void addCondiments() {
		System.out.println("add lemon");

	}

	@Override
	void brew() {
		System.out.println("tea brew");

	}

}

 

package com.lwf.templatemethod;

public class Coffee extends CoffeineBeverage {

	@Override
	void addCondiments() {
		System.out.println("add suger");

	}

	@Override
	void brew() {
		System.out.println("coffee brew");
	}

}

 

 

这里区分一下模板方法, 工厂方法与策略

模板方法:  是由子类决定如何实现算法中的步骤

工厂方法:  是由子类决定实例化哪个具体的类

策略:         封装可互换的行为,然后使用委托来决定要采用哪一个行为

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值