定义:
定义一个操作中算法的骨架,而将一些步骤提早到子类中,模板办法使得子类能够不扭转算法的构造即可重定义该算法的某些特定步骤。艰深点的了解就是:实现一件事件,有固定的数个步骤,然而每个步骤依据对象的不同,而实现细节不同;就能够在父类中定义一个实现该事件的总办法,依照实现事件须要的步骤去调用其每个步骤的实现办法。每个步骤的具体实现,由子类实现。
类关系:
形象父类(AbstractClass):实现了模板办法,定义了算法的骨架。
具体类(ConcreteClass):实现抽象类中的形象办法,即不同的对象的具体实现细节。
package designPattern.template;
public class A {public void funA(){fun1();
fun2();}
public void fun1(){System.out.println("this is fun1 of A");
}
public void fun2(){System.out.println("this is fun2 of A");
}
}
public class B extends A{public void funB(){funA();
}
@Override
public void fun1(){System.out.println("this is fun1 of B");
}
}
// 单元测试:public class BTest {
@Test
public void funBTest() {B b = new B();
b.funB();}
}
后果:
this is fun1 of B
this is fun2 of A
由此可见:funB 用了父类 A 算法骨架即 funA, 总共 2 步,第一步执行的是子类 B 的 fun1, 第二部步是父类 A 的 fun2