模板设计模式

public class TemplateDesignPattern{
	public static void main(String[] args) {
		Drink coffee=new Coffee();
		coffee.means();
		Drink tea1=new Tea();
		tea1.means();
		Drink tea2=new Tea(false);
		tea2.means();		
	}
}
abstract class Drink{
	public final void means() {
		boilWatter();
		addMaterial();
		pourCup();
		if(this.isAddCondiments()) {
		addCondiments();
		}
	}
	public void boilWatter() {
		System.out.println("1.煮沸水");
	}
	public abstract void addMaterial();
	public abstract void pourCup();
	public abstract void addCondiments();
	public boolean isAddCondiments() {
		return true;
	}
}


class Coffee extends Drink{

	public void addMaterial() {
		System.out.println("2.用沸水冲泡咖啡");
	}
	public void pourCup() {
		System.out.println("3.把泡好的咖啡倒入杯子");
	}
	public void addCondiments() {
		System.out.println("4.加糖和牛奶");
	}

}


class Tea extends Drink{
	private boolean addCondiments=true;
	
	public Tea() {
		
	}
	public Tea(boolean addCondiments) {
		this.addCondiments=addCondiments;
	}
	public void boilWatter() {
		super.boilWatter();
		System.out.println("1.1水温80度");
	}
	public void addMaterial() {
		System.out.println("2.用沸水冲泡茶叶");
	}
	public void pourCup() {
		System.out.println("3.把泡好的茶倒入杯子");
	}
	public void addCondiments() {
		System.out.println("4.加柠檬");
	}
	public boolean isAddCondiments() {
		return this.addCondiments;
	}

}

模板设计模式遵循开闭原则,旨在把一系列有规律的流程归类定义为一个父类,由父类确定一个大体的框架(含有抽象的工作流程),再由诸多子类进行细化实行子类的工作方式;


abstract class Drink{
	public final void means() {
		boilWatter();
		addMaterial();
		pourCup();
		if(this.isAddCondiments()) {
		addCondiments();
		}
	}
	public void boilWatter() {
		System.out.println("1.煮沸水");
	}
	public abstract void addMaterial();
	public abstract void pourCup();
	public abstract void addCondiments();
	public boolean isAddCondiments() {
		return true;
	}
}

子类对父类的一些抽象方法可利用构造方法可以选择执行或者不执行;

class Tea extends Drink{
	private boolean addCondiments=true;
	
	public Tea() {
		
	}

	public boolean isAddCondiments() {
		return this.addCondiments;
	}

}

并且在父类中有一些普通方法子类可以选择要不要覆盖他们,这些方法叫做钩子方法;

通过覆写,子类还可以对父类的统一的方法进行完善.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值