模板模式:复用和扩展

模板模式:复用和扩展

  • 复用和扩展
  • 使用钩子,进行控制操作




模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。

这里的算法是指“业务逻辑”,这个“算法”骨架或者流程就是模板。

复用和扩展

比如在一个星巴克流程中,1)热水 2)冲泡(咖啡or茶) 3) 装入杯中 4)加入小料
这是一个固定的流程,全国都是按照这个流程去制作。

public abstract class XBK{
	public final void start(){
		paoshui();
		chongpao();
		zhuangbei();
		jialiao();
	}

	private void paoshui(){
		//热水
	}
	
	private abstract void chongpao(){
		//冲泡  需要自己重写需要冲泡什么
		throw new Exception();
	}

	private void zhuangbei(){
		//装杯
	}

	private abstract void jialiao(){
		//加料自己定义
		throw new Exception();
	}

}

通过这个模板来实现 热水和装杯的代码复用,冲泡和加料的自己实现扩展。
所有的都是按照一个模板来进行操作的。
模板模式:复用和扩展_第1张图片

使用钩子,进行控制操作

还是以星巴克为例

public abstract class XBK{
	public final void start(){
		paoshui();
		chongpao();
		zhuangbei();
		if(shifoujiaxiaoliao()){
			jialiao();
		}	
	}

	private void paoshui(){
		//热水
	}
	
	public abstract void chongpao(){
		//冲泡  需要自己重写需要冲泡什么
		throw new Exception();
	}

	private void zhuangbei(){
		//装杯
	}

	//是否加料
	public boolean shifoujiaxiaoliao(){
		return true;
	}

	public abstract void jialiao(){
		//加料自己定义
		throw new Exception();
	}

}

让调用者挂钩重写加料方法使得,来控制是否加料。






如有错误欢迎指正
引用文献为《Head Fist设计模式》第八章封装算法模板方法模式、
GoF 《设计模式》

你可能感兴趣的:(23种设计模式,java,开发语言)