zoukankan      html  css  js  c++  java
  • 回调(CallBack)

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

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

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

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

     1 package cn.bjsxt.oop.callback;
     2 /**
     3  * awt
     4  * callback 又叫hook 或者  模板方法模式
     5  * 比如一个方法不知道复合物实现,就画个钩子hook或者callback,让别人来实现。
     6  * @author Administrator
     7  *
     8  */
     9 public class PaintFrame {
    10     //形参列表 写父类名和 对象名  实际传参的时候 有具体的定义好的子类
    11     public static void drawFrame(MyFrame f){
    12         System.out.println("启动线程");
    13         System.out.println("增加循环");
    14         System.out.println("查看消息栈");
    15         
    16         //画窗口 不知道怎么实现 由谁实现  由他父类引用指向子类对象 就是多态来实现
    17         //这个地方 你传啥 调啥 
    18         f.paint();
    19         
    20         System.out.println(" 启动缓存,增加效率");
    21     }
    22     
    23     public static void main(String[] args) {
    24         drawFrame(new GameFrame01());
    25         drawFrame(new GameFrame02());
    26     }
    27 }
    28 class GameFrame01 extends MyFrame{
    29     public void paint(){
    30         System.out.println("GameFrame01.print()");
    31         System.out.println("画窗口");
    32     }
    33 }
    34 class GameFrame02 extends MyFrame{
    35     public void paint(){
    36         System.out.println("GameFrame02.print()");
    37         System.out.println("画窗口");
    38     }
    39 }
    1 package cn.bjsxt.oop.callback;
    2 //MyFrame是父类,我希望我的子类都重写我的方法 那么 我干脆 定义成抽象类,或者更彻底   变成接口  实际 项目就是用接口
    3 public  abstract class MyFrame {
    4     public   abstract void paint();
    5 }
    启动线程
    增加循环
    查看消息栈
    GameFrame01.print()
    画窗口
     启动缓存,增加效率
    启动线程
    增加循环
    查看消息栈
    GameFrame02.print()
    画窗口
     启动缓存,增加效率

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

    我们定义一个接口

     1 package cn.bjsxt.oop.callback;
     2 //MyFrame是父类,我希望我的子类都重写我的方法 那么 我干脆 定义成抽象类,或者更彻底   变成接口  实际 项目就是用接口
     3  /*
     4 public  abstract class MyFrame {
     5     public   abstract void paint();
     6 }
     7 */
     8 //工作都是用接口 
     9 interface IMyFrame{
    10     void paint();
    11 }
     1 package cn.bjsxt.oop.callback;
     2 /**
     3  * awt
     4  * callback 又叫hook 或者  模板方法模式
     5  * 比如一个方法不知道复合物实现,就画个钩子hook或者callback,让别人来实现。
     6  * @author Administrator
     7  *
     8  */
     9 public class PaintFrame {
    10     //形参列表 写父类名和 对象名  实际传参的时候 有具体的定义好的子类
    11     public static void drawFrame(IMyFrame f){
    12         System.out.println("启动线程");
    13         System.out.println("增加循环");
    14         System.out.println("查看消息栈");
    15         
    16         //画窗口 不知道怎么实现 由谁实现  由他父类引用指向子类对象 就是多态来实现
    17         //这个地方 你传啥 调啥 
    18         f.paint();
    19         
    20         System.out.println(" 启动缓存,增加效率");
    21     }
    22     
    23     public static void main(String[] args) {
    24         drawFrame(new GameFrame01());
    25         drawFrame(new GameFrame02());
    26     }
    27 }
    28 class GameFrame01 implements IMyFrame{
    29     public void paint(){
    30         System.out.println("GameFrame01.print()");
    31         System.out.println("画窗口");
    32     }
    33 }
    34 class GameFrame02 implements IMyFrame{
    35     public void paint(){
    36         System.out.println("GameFrame02.print()");
    37         System.out.println("画窗口");
    38     }
    39 }
    启动线程
    增加循环
    查看消息栈
    GameFrame01.print()
    画窗口
     启动缓存,增加效率
    启动线程
    增加循环
    查看消息栈
    GameFrame02.print()
    画窗口
     启动缓存,增加效率

    说白了,就是多态。

  • 相关阅读:
    Django contenttypes 组件
    CPU 的工作原理
    Redis基础
    面向对象中的__slots__
    DRF 的解析器和渲染器
    DRF的认证、权限 和 限制
    DRF中的版本控制
    REST framework 视图
    Java多线程(1):3种常用的实现多线程类的方法
    Java多线程(2):线程加入/join()
  • 原文地址:https://www.cnblogs.com/PoeticalJustice/p/7623907.html
Copyright © 2011-2022 走看看