美文网首页
代理模式和回调函数

代理模式和回调函数

作者: Aaron_Swartz | 来源:发表于2019-11-04 20:49 被阅读0次
package callback;
public interface CallBack {
    void execute();
}
package callback;
public class MyCallBack implements CallBack {
    @Override
    public void execute() {
        testMethod();
    }
    public   static   void  testMethod(){
        for (int  i= 0 ; i< 100000000 ; i++){

        }
    }
}
package callback;
// 代理类
public class Proxy implements CallBack {
    private MyCallBack callBack;
    public Proxy(MyCallBack callBack) {
        this.callBack = callBack;
    }

    @Override
    public void execute() {
        callBack.execute();
    }
}
package callback;

public class RunningTime {
    public static void testMethod(){
        for (int i = 0; i < 100000; ++i) {
            System.out.print("i:" + i);
        }
        System.out.println();
    }

    public void testTime() {
        long begin = System.currentTimeMillis();
        testMethod();
        long end = System.currentTimeMillis();
        System.out.println("cost time:" + (end - begin));
    }

    public static void main(String[] args) {
        RunningTime test = new RunningTime();
        test.testTime();
        System.out.println("ok");
    }
}
package callback;

public class Tools {

    public void testTime (CallBack callBack) {
        long start = System.currentTimeMillis();
        callBack.execute();
        long end = System.currentTimeMillis();
        System.out.println("cost time: " + (end - start));
    }

    public static void main(String[] args) throws InterruptedException {
        /**Tools tools = new Tools();
        tools.testTime(() -> RunningTime.testMethod()); // n=100执行时间9ms,时间长之后近似
        Thread.sleep(1000);
        tools.testTime(new CallBack() { // n=100 cost 2ms
            @Override
            public void execute() {
                RunningTime.testMethod();
            }
        });
        System.out.println("hhh, ok!");**/
        Tools tools = new Tools();
        // 代理类实现调用
        Proxy proxy = new Proxy(new MyCallBack());
        tools.testTime(proxy);
    }
}

区别:
1 代理模式需要创建接口实现类,并放入代理类中隔离性能好,扩展性好。
2 回调函数不需要创建接口实现类, 编写方便。

参考:
1 java 回调函数例子,及其原理,与代理模式的区别

相关文章

  • 代理模式和回调函数

    区别:1 代理模式需要创建接口实现类,并放入代理类中隔离性能好,扩展性好。2 回调函数不需要创建接口实现类, 编写...

  • JavaScript 模式(四)

    函数模式 1.回调模式 【基本模式】 回调模式下,回调函数作为参数可以是一个已有的函数,也可以是匿名函数 【作用域...

  • 升级Swift4.0扫描二维码不回调

    代理AVCaptureMetadataOutputObjectsDelegate的回调函数已被重命名: 所以,替换 至

  • Node.js回调函数

    1、函数调用的三种方式:同步调用、回调和异步调用2、回调是一种双向调用模式3、可以通过回调函数来实现回调4、阻塞和...

  • ReactiveCocoa 层次构成(笔记)

    ReactiveCocoa 是一个iOS中的函数响应式编程框架,将原有的各种设计模式,如代理、Block回调、Ta...

  • node系列扯犊子之八Events模块

    起因:回调函数模式让 Node 可以处理异步操作。但是,为了适应回调函数,异步操作只能有两个状态:开始和结束。对于...

  • 适用于ios的音频单元指南(2)

    构建音频单元应用程序 首先选择设计模式 I/O 直接相连模式 没有渲染回调函数的i/o 带有渲染回调函数的 I/O...

  • iOS回调,异步回调实现,以及创建可取消的任务

    iOS下回调机制 在iOS下实现回调的方式 iOS下的代理模式实现方式利用protocol ,需要进行向外回调的实...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • 代理与委托回调

    代理模式讲解 委托回调模式讲解 字符串中各个数字或字母的获取

网友评论

      本文标题:代理模式和回调函数

      本文链接:https://www.haomeiwen.com/subject/wvcjbctx.html