* 钩子函数:
* 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!!"); } }