又名钩子函数(C语言里Hook)

不知道如何实现,可以写个回调,

相当于提供个钩子,让别人来挂东西,来实现。

其实就是用多态,实现了分离 。

 package cn.bjsxt.oop.callback;
/**
* awt
* callback 又叫hook 或者 模板方法模式
* 比如一个方法不知道复合物实现,就画个钩子hook或者callback,让别人来实现。
* @author Administrator
*
*/
public class PaintFrame {
//形参列表 写父类名和 对象名 实际传参的时候 有具体的定义好的子类
public static void drawFrame(MyFrame f){
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息栈"); //画窗口 不知道怎么实现 由谁实现 由他父类引用指向子类对象 就是多态来实现
//这个地方 你传啥 调啥
f.paint(); System.out.println(" 启动缓存,增加效率");
} public static void main(String[] args) {
drawFrame(new GameFrame01());
drawFrame(new GameFrame02());
}
}
class GameFrame01 extends MyFrame{
public void paint(){
System.out.println("GameFrame01.print()");
System.out.println("画窗口");
}
}
class GameFrame02 extends MyFrame{
public void paint(){
System.out.println("GameFrame02.print()");
System.out.println("画窗口");
}
}
 package cn.bjsxt.oop.callback;
//MyFrame是父类,我希望我的子类都重写我的方法 那么 我干脆 定义成抽象类,或者更彻底 变成接口 实际 项目就是用接口
public abstract class MyFrame {
public abstract void paint();
}
启动线程
增加循环
查看消息栈
GameFrame01.print()
画窗口
启动缓存,增加效率
启动线程
增加循环
查看消息栈
GameFrame02.print()
画窗口
启动缓存,增加效率

实际工作中更多用的是接口,强制你实现重写方法。

我们定义一个接口

 package cn.bjsxt.oop.callback;
//MyFrame是父类,我希望我的子类都重写我的方法 那么 我干脆 定义成抽象类,或者更彻底 变成接口 实际 项目就是用接口
/*
public abstract class MyFrame {
public abstract void paint();
}
*/
//工作都是用接口
interface IMyFrame{
void paint();
}
 package cn.bjsxt.oop.callback;
/**
* awt
* callback 又叫hook 或者 模板方法模式
* 比如一个方法不知道复合物实现,就画个钩子hook或者callback,让别人来实现。
* @author Administrator
*
*/
public class PaintFrame {
//形参列表 写父类名和 对象名 实际传参的时候 有具体的定义好的子类
public static void drawFrame(IMyFrame f){
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息栈"); //画窗口 不知道怎么实现 由谁实现 由他父类引用指向子类对象 就是多态来实现
//这个地方 你传啥 调啥
f.paint(); System.out.println(" 启动缓存,增加效率");
} public static void main(String[] args) {
drawFrame(new GameFrame01());
drawFrame(new GameFrame02());
}
}
class GameFrame01 implements IMyFrame{
public void paint(){
System.out.println("GameFrame01.print()");
System.out.println("画窗口");
}
}
class GameFrame02 implements IMyFrame{
public void paint(){
System.out.println("GameFrame02.print()");
System.out.println("画窗口");
}
}
启动线程
增加循环
查看消息栈
GameFrame01.print()
画窗口
启动缓存,增加效率
启动线程
增加循环
查看消息栈
GameFrame02.print()
画窗口
启动缓存,增加效率

说白了,就是多态。

最新文章

  1. 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)
  2. ios https适配(单向验证)
  3. App.xaml
  4. other 遮罩层
  5. Android 监听ListView、GridView滑动到底部
  6. [置顶] 让你的Android应用与外部元素互动起来
  7. 池化 - Apache Commons Pool
  8. span表情输入框 --- Author: rose && lvyerose@163.com
  9. python爬虫之爬取百度图片
  10. 使用顶级 VSCode 扩展来加快开发 JavaScript
  11. Spring Cloud Context模块
  12. CSS设计模式
  13. Ontology
  14. PKUWC2019 凉凉记
  15. HTML学习笔记06-连接
  16. https://github.com/Lushenggang/show-pdf在线浏览pdf文件在线浏览pdf文件
  17. JavaScript基础(三)
  18. Intellij IDEA15: 带着参数 运行
  19. gearman入门初步
  20. hadoop学习day1环境配置笔记(非完整流程)

热门文章

  1. DevExpress GridControl控件行内新增、编辑、删除添加选择框(转)
  2. 《java笔记》
  3. unittest框架模版 (含智能执行类下面所有用例并出报告)
  4. C++基本规则
  5. skopt学习之路1-函数介绍:dummy_minimize
  6. 基于sklearn的 BaseEstimator开发接口:模型融合Stacking
  7. CentOS 7.3 CDH 5.10.0 Druid0.12.4安装记录
  8. 解决php7.1的中遇到的问题
  9. logger常用方法
  10. IO模式调查利器blkiomon介绍