CallBack/Hook
写代码的时候会有下面的情况:
--------一行代码--------
--------二行代码--------
这一行不知道怎么写/不知道怎么实现,在这里调一个方法。相当于在这里挂个
钩子:到时候让别人给我挂,挂什么就运行什么。不太确定怎么实现就交给别人来做
--------三行代码--------
这样写的好处就是,实现了钩子方法和上下其他代码的分离。
就像钩一样,他写完就挂上面。也就是说他挂什么,我就执行什么。
public class MyFrame {
public void paint() {
System.out.println("把自己的窗口画出来");
}
}
interface IMyFrame {
void paint();
}
public class PaintFrame {
public static void main(String[] args) {
//drawFrame(new GameFrame1());
drawFrame(new GameFrame22());
}
/**
* 钩子:运行哪个就挂哪个
* 方法回调:我这里先写死,至于调哪一个回头再说
* 模板方法模式:设计模式。不是一个死模板,中间有变得地方;既有规范 又灵活
*/
public static void drawFrame(IMyFrame f) { //方法参数用到了多态
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息栈");
//画窗口
f.paint();// 钩子/函数回调(把定义好的方法往上一挂就执行了)
System.out.println("启动缓存,增加效率");
}
}
class GameFrame11 implements IMyFrame {
public void paint() {
System.out.println("把自己的窗口画出来:游戏11窗口");
}
}
class GameFrame22 implements IMyFrame {
public void paint() {
System.out.println("把自己的窗口画出来:游戏22窗口");
}
}
class GameFrame1 extends MyFrame {
public void paint() {
System.out.println("把自己的窗口画出来:游戏1窗口");
}
}
class GameFrame2 extends MyFrame {
public void paint() {
System.out.println("把自己的窗口画出来:游戏2窗口");
}
}