设计模式之模版方法(TemplateMethod)

模版方法 钩子函数 回调函数

在父类里面有一个模版方法,在这个方法里面调用了op1,op2,op3… 在子类里面如果想要改变父类的op1和op2
只需要重写op1和op2,那么这个重写之后的方法,可以在父类里面直接调用的到

例子:
Java AWT里面的Frame类 --> 有setVible方法 --> 自动会调用update和paint方法
Frame的子类只需要实现update和paint方法,重写的方法在父类里面能直接调用的到
设计模式之模版方法(TemplateMethod)_第1张图片

public class Main {
    public static void main(String[] args) {
        F f = new C1();
        // 调用模版方法,子类实现的op1和op2被自动调用
        f.m();
    }

}

abstract class F {
    // 模版方法,调用了op1和op2
    public void m() {
        op1();
        op2();
    }
    // 留给子类去实现
    abstract void op1();
    abstract void op2();
}

// 子类实现父类里面的方法
class C1 extends F {

    @Override
    void op1() {
        System.out.println("op1");
    }

    @Override
    void op2() {
        System.out.println("op2");
    }
}

你可能感兴趣的:(设计模式,设计模式,模版方法,TemplateMethod)