设计模式之———(行为模式)Template

/*抽象模板的实现*/
public abstract class Templator {

    public void hookMethod() {}//钩子方法,提供默认实现,子类可以提供具体    的实现
    public void concreteMethod() {//组装方法
       abstractMethod0();
      abstractMethod1();
    }

    public abstract void abstractMethod0(); //抽象方法,需要子类提供具体的实现
    public abstract void abstractMethod1(); //抽象方法,需要子类提供具体的实现

}

/*具体模板1*/
public class ConcreteTemplator1 extends Templator{

    public void hookMethod() {
        System.out.println("invoke ConcreteTemplator1.hookMethod()...");
    }

    public void abstractMethod0() {
         System.out.println("invoke ConcreteTemplator1.abstractMethod0()...");
    }

    public void abstractMethod1() {
         System.out.println("invoke ConcreteTemplator1.abstractMethod1()...");

}

/*具体模板2*/
public class ConcreteTemplator2 extends Templator {

    public void hookMethod() {
        System.out.println("invoke ConcreteTemplator2.hookMethod()...");
    }

    public void abstractMethod0() {
         System.out.println("invoke ConcreteTemplator2.abstractMethod0()...");
    }

    public void abstractMethod1() {
         System.out.println("invoke ConcreteTemplator2.abstractMethod1()...");

}

/*测试类*/
public class Client() {
  public static void main(String[]args) {
       Templator t1 = new ConcreteTemplator1();
       t1.hookMethod();
       t1.concreteMethod();
       Templator t2 = new ConcreteTemplator2();
       t2.hookMethod();
       t2.concreteMethod();  
   }
}

//输出结果:
invoke ConcreteTemplator1.hookMethod()...
invoke ConcreteTemplator1.abstractMethod1()...
invoke ConcreteTemplator1.abstractMethod1()...
invoke ConcreteTemplator2.hookMethod()...
invoke ConcreteTemplator2.abstractMethod1()...
invoke ConcreteTemplator2.abstractMethod1()...

你可能感兴趣的:(设计模式)