模板方法模式

代码:

 1 public abstract class AbstractClass {
 2     //基本方法
 3     protected abstract void doSomething();
 4     //基本方法
 5     protected abstract void doAnything();
 6     //模板方法
 7     public void template(){
 8         doSomething();
 9         doAnything();
10         if(isAlarm()){
11             System.out.println("i am ring");
12         }
13     }
14     //钩子方法
15     protected boolean isAlarm(){
16         return true;
17     }
18 }
public class ClassA extends AbstractClass {

    @Override
    protected void doSomething() {
        System.out.println("Class A doSomething");
    }

    @Override
    protected void doAnything() {
        System.out.println("Class A doAnything");
    }

}


public class ClassB extends AbstractClass {

    @Override
    protected void doSomething() {
        System.out.println("Class B doSomething");
    }

    @Override
    protected void doAnything() {
        System.out.println("Class B doAnything");
    }

    @Override
    protected boolean isAlarm() {
        return false;
    }
    
}

总结: 利用了Java的抽象类的继承,通过向上转型,父类通过模板方法调用子类;产生不同的行为。钩子方法用的很巧妙(需要约束子类的行为时使用)

原文地址:https://www.cnblogs.com/Non-Tecnology/p/6064045.html