在程序开发中你可能常常遇到这种状况,某个要实现的算法分为多个步骤,有些步骤是固定不变的,有些步骤是不固定的,为了提升代码的可扩展性和可维护性,模板设计模式在这种场景下就派上用场了。java
在模板设计模式中,一个算法能够分为多个步骤,每一个步骤对应一个方法称为基本方法,步骤的执行顺序是在一个模板方法中定义好的,有些基本方法是固定不变的,有些基本方法是不固定的。在模板设计模式中,模板方法和固定不变的基本方法会在父类中实现,而不固定的基本方法在父类中是抽象方法,其实现被延迟到子类中完成。算法
如上图所示,在抽象类AbstractClass中Operation_4()方法是固定的基本方法,其实如今父类中。而Operation_二、Operation_3()、Operation_5()是不固定的基本方法,因此在父类中是抽象方法,须要子类去实现。设计模式
/*********************************************************************** * Module: AbstractClass.java * Author: Administrator * Purpose: Defines the Class AbstractClass ***********************************************************************/ import java.util.*; public abstract class AbstractClass { public void template() { // TODO: implement } public abstract void operation(); public abstract void operation3(); public void operation4() { // TODO: implement } public abstract void operation5(); }
/*********************************************************************** * Module: ConcreteClass1.java * Author: Administrator * Purpose: Defines the Class ConcreteClass1 ***********************************************************************/ import java.util.*; public class ConcreteClass1 extends AbstractClass { public void operation() { // TODO: implement } public void operation3() { // TODO: implement } public void operation5() { // TODO: implement } }
/*********************************************************************** * Module: ConcerteClass2.java * Author: Administrator * Purpose: Defines the Class ConcerteClass2 ***********************************************************************/ import java.util.*; public class ConcerteClass2 extends AbstractClass { public void operation() { // TODO: implement } public void operation3() { // TODO: implement } public void operation5() { // TODO: implement } }