* 钩子函数:
* 1 是Java三大特性之多态的典型应用
* 2 在JavaEE框架中,或者Android中,这种方式最为常用,你重写接口/抽象类的某个方法,然后注册给框架,框架启动后就会自动调用你实现的方法,流程类似下面代码
* 3 提供一个钩子(接口或者抽象类),调用者向钩子挂猪肉或者挂牛肉都是调用者的自由(猪肉,牛肉需要由调用者在具体实现类方法上自己写好)
代码:
public class PaintFrame {
/**
* 钩子函数:
* 1 是Java三大特性之多态的典型应用
* 2 在JavaEE框架中,或者Android中,这种方式最为常用,你重写接口/抽象类的某个方法,然后注册给框架,框架启动后就会自动调用你实现的方法,流程类似下面代码
* 3 提供一个钩子(接口或者抽象类),调用者向钩子挂猪肉或者挂牛肉都是调用者的自由(猪肉,牛肉需要由调用者在具体实现类方法上自己写好)
*/
public static void main(String[] args) {
MyFrame myFrame = new GameFrame();
paint(myFrame);
}
public static void paint(MyFrame myFrame){
System.out.println("启动线程"); // 框架启动初始化
System.out.println("准备好画笔,支架");
System.out.println("戴好手套,手机关机,开始聚精会神构思作品");
// 钩子,用抽象类或者接口接收具体实现类,具体行为交给调用者来实现, 这是框架中常见的模式,其实就是用的多态
myFrame.paint(); // 框架调用你挂来的钩子
System.out.println("画画结束,大功告成"); // 框架执行结束
}
}
abstract class MyFrame{
public abstract void paint();
}
class GameFrame extends MyFrame{
@Override
public void paint() {
System.out.println("draw a tiger, very strong!!");
}
}