1.定义抽象类,

2.定义抽象方法

3.定义具体方法

4.在具体方法里调用抽象方法

5.子类继承抽象类并实现抽象方法

6.不同的子类实现即可实现不同方法调用

7.代码

AbstractClass(抽象模板):

package com.jxs.templateMethod;


public abstract class AbstractClass {

    public abstract void primitiveOperation1();

    public abstract void primitiveOperation2();

    // 模板方法,给出了逻辑的骨架
    // 而逻辑的组成是一些相应的抽象操作,他们都推迟到子类实现
    public void templateMethod() {

        primitiveOperation1();
        primitiveOperation2();
        System.out.println("");
    }
}

ConcreteClassA:

package com.jxs.templateMethod;


public class ConcreteClassA extends AbstractClass {

    @Override
    public void primitiveOperation1() {

        System.out.println("具体类A方法1实现");
    }

    @Override
    public void primitiveOperation2() {

        System.out.println("具体类A方法2实现");
    }
}

ConcreteClassB:

package com.jxs.templateMethod;


public class ConcreteClassB extends AbstractClass {

    @Override
    public void primitiveOperation1() {

        System.out.println("具体类B方法1实现");
    }

    @Override
    public void primitiveOperation2() {

        System.out.println("具体类B方法2实现");
    }
}

客户端:

package com.jxs.templateMethod;


public class Client {

    public static void main(String[] args) {

        AbstractClass c;

        c = new ConcreteClassA();
        c.templateMethod();

        c = new ConcreteClassB();
        c.templateMethod();
    }
}

结果:

具体类A方法1实现
具体类A方法2实现

具体类B方法1实现
具体类B方法2实现


Process finished with exit code 0