package template_method_pattern;
public abstract class AbstractClass {
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
public void TemplateMethod() {
PrimitiveOperation1();
PrimitiveOperation2();
System.out.println();
}
}
package template_method_pattern;
public class ConcreteClassA extends AbstractClass{
@Override
public void PrimitiveOperation1(){
System.out.println("This is the concrete method:A1");
}
@Override
public void PrimitiveOperation2(){
System.out.println("This is the concrete method:A2");
}
}
package template_method_pattern;
public class ConcreteClassB extends AbstractClass{
@Override
public void PrimitiveOperation1() {
System.out.println("This is the concrete method:B1");
}
@Override
public void PrimitiveOperation2() {
System.out.println("This is the concrete method:B2");
}
}
package template_method_pattern;
public class Main {
public static void main(String args[]) {
AbstractClass c;
c = new ConcreteClassA();
c.TemplateMethod();
c = new ConcreteClassB();
c.TemplateMethod();
}
}
/*
* The core of the template method pattern is extract abstraction that move the
* invariable part into abstract super class,which makes it easy for reuse.
*/
This is a general introduction to the 23 design patterns in chinese:
https://blog.csdn.net/GZHarryAnonymous/article/details/81567214
See more source code:[GZHarryAnonymous](https://github.com/GZHarryAnonymous/Design_Pattern)