fantasticDream

面向对象编程----回调的实现_模板方法模式

回调的实现

 CallBac 回调函数

 Hook 有的也叫Hook

 模板方法模式  

在执行代码的时候?

中间有不确定结果的问题是可以使用回调将他赋值后在调用

实现两个的分离把不太确定的交给别人来做)

package cn.bjsxt.oop.callback;
/**
* paintframe 画窗口
* @author 神奇的梦
* 说白了就是多态。
* 说白了二三种制定模式 就是面向对象的应用
* 定义好子类,子类定义完之后注册,注册完之后就会自动调用子类相关的方法
* (至于怎么掉的不用管)它在模板里面已经写好了
*
*/
//awt里面定义了一个PaintFrame这样的一个方法 awt就是java里面
//通过一个钩子 把你已经定义好的类挂到钩子上就可以了
public class PaintFrame {
// 在调用drawFrame的时候调用一个子类对象
// 如果是继承把局部变量MyFrame类型
// 如果是接口把局部变量IMyFrame类型
public static void drawFrame(IMyFrame f) {
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息线");
//画窗口
// 调用了MyFrame的方法paint
// f.print()这里是一个变得地方,这里已经在模板里面写好了。
// 到时候这里传哪一个你调那一个。
f.paint();
System.out.println("启动缓存,增加效率");
}

public static void main(String[] args) {
// 直接构造GameFrame02方法,用drawFrame()来调用
// 模板方法模式
// 构造 这里到时候传哪一个调哪一个
drawFrame(new GameFrame02());
// 继承子类的重写调用
// drawFrame(new GameFrame022());
}
}
class GameFrame01 implements IMyFrame /* extends MyFrame */{
public void paint() {
System.out.println("GameFrame01.paint()");
System.out.println("画窗口!");
}
}

class GameFrame02 implements IMyFrame /* extends MyFrame */{
public void paint() {
System.out.println("GameFrame01.paint()");
System.out.println("画窗口!");
}
}

class GameFrame011 extends MyFrame {
public void paint() {
System.out.println("GameFrame011.paint()");
System.out.println("画窗口!");
}
}
class GameFrame022 extends MyFrame{
public void paint() {
System.out.println("GameFrame022.paint()");
System.out.println("画窗口!");
}
}

package cn.bjsxt.oop.callback;

// MyFrame是一个父类
//public class MyFrame {
// public void paint() {
// System.out.println("把自己窗口画出来");
// }
//}
// 如果要子类都写你的方法 做一个抽象类。
public abstract class MyFrame {
public abstract void paint();
}

// 项目里面最多的就是接口
interface IMyFrame{
void paint();
}

posted on 2022-06-07 22:38  神奇的梦  阅读(42)  评论(0编辑  收藏  举报

导航