package com.tn.pattern;
public class Client {
public static void main(String[] args) {
AbstractClass c1=new ConcreteClass1();
c1.templateMethod();
AbstractClass c2=new ConcreteClass2();
c2.templateMethod();
}
}
abstract class AbstractClass{
abstract protected void primitiveMethod1();
abstract protected void primitiveMethod2();
protected void templateMethod(){
System.out.println("templateMethod() start...");
primitiveMethod1();
primitiveMethod2();
System.out.println("templateMethod() end.");
}
}
class ConcreteClass1 extends AbstractClass{
@Override
public void primitiveMethod1() {
System.out.println("ConcreteClass1's primitiveMethod1()...");
}
@Override
public void primitiveMethod2() {
System.out.println("ConcreteClass1's primitiveMethod2()...");
}
}
class ConcreteClass2 extends AbstractClass{
@Override
public void primitiveMethod1() {
System.out.println("ConcreteClass2's primitiveMethod1()...");
}
@Override
public void primitiveMethod2() {
System.out.println("ConcreteClass2's primitiveMethod2()...");
}
}