Loading

Design Pattern:模板方法模式

模板方法模式

在一个方法在定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

  • 抽象类专注算法本身,子类提供完整实现
  • 代码复用最大化
  • image-20200620215519984

例子

abstract class AbstractClass{
	final void templateMethod(){
		operation1();
		operation2();
		concreteOperation();
		hook();
	}
	
	abstract void operation1();
	abstract void operation2();
	final void concreteOperation(){
	 // 实现
	}
	void hook(){}
}

模板方法里可以有三种函数:

  • 抽象方法
    • 子类必须提供具体实现
  • 具体实现
    • 提供了默认实现,子类可以选择覆盖
  • 钩子
    • 可选步骤
posted @ 2020-06-21 17:46  cpaulyz  阅读(126)  评论(0编辑  收藏  举报