设计模式在现实开发中的使用——模板方法模式

设计模式在实际开发中的使用——模板方法模式

模板方法模式,定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

 

下面看一个模板方法模式在实际中的例子:maven的生命周期管理。

maven的生命周期对所有的构建过程进行了抽象和统一。这个生命周期包含了初始化、编译、测试、打包、验证、部署和站点生成等几乎所有的构建步骤。

maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,实际的任务都交由插件来完成。这种思想与模板方法模式非常相似。模板方法模式在父类中定义算法的整体结构,子类可以通过实现或者重写父类的方法来控制实际的行为,这样既保证了算法有足够的可扩展型,又能够严格控制算法的整体结构。

 

public abstract class AbstractBuild {
	public void build(){
		initialize();
		compile();
		test();
		packagee();
		integrationTest();
		deploy();
	}
	protected abstract void initialize();
	protected abstract void compile();
	protected abstract void test();
	protected abstract void packagee();
	protected abstract void integrationTest();
	protected abstract void deploy();
}

build()方法定义了整个构建的过程,依次为初始化、编译、测试等,但是这个类没有具体实现这些行为,它们都交由子类去实现。

生命周期抽象了构建的各个步骤,定义了它们的次序,但没有提供具体实现。具体实现交个一个或者多个插件实现。