zoukankan      html  css  js  c++  java
  • Java接口回调模拟按钮监听

    做Android开发的时候,经常碰到View的事件监听,虽然一直在用,但从未思考它的实现原理。还有回调函数虽然经常听说,但是总感觉很晕,一想脑袋就开始乱了。所以今天就写点东西来理一下思路。

    回调函数

    以下是维基百科上的定义:

    计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码引用。这一设计允许了底层代码调用在高层定义的子程序

    光看定义可能晦涩难懂,下面还是回到标题,用Java接口回调实现按钮监听。

    Java接口回调

    我这里的代码基本就仿照Android的按钮监听方式。

    首先定义一个接口,里面定义回调函数onClick。

    public interface OnClickListener {
        void onClick(Button b);
    }

    然后我们来实现Button类。

    public class Button {
        private OnClickListener listener;
        
        public void setOnClickListener(OnClickListener listener){
            this.listener=listener;
        }
        
        public void printSomeThing(String msg){
            System.out.println(msg);
        }
    
        public void click() {
            listener.onClick(this);
        }
    
    }

    最后在main函数中调用。

    public class CallBackTest {
        
        public static void main(String[] args) {
            Button button=new Button();
            button.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(Button b) {
                    b.printSomeThing("按钮被点击");
                }
            });
            
            System.out.println("开始模拟点击");
            System.out.println("真正的点击应该由系统来调用");
            button.click();
        }
    
    }

    大概过程就是button.click()调用回调函数OnClickListener.onClick,但是这个onClick的实现是在button.setOnClickListener里面的匿名内部类实现的。语言还是表达不太清楚,所以还是多看代码吧。

    JS中的回调函数

     顺便提一下JS中的回调函数吧。因为JS的函数也是对象,可以直接作为参数传递,所以实现起来很简单。

        //模拟服务器返回数据
        var getInfo=function(id,callback){
            var result="<div>Something get By"+id+"</div>";
            setTimeout(function(){
               callback(result);
            },1000);//定时1秒返回数据
        };
        //调用
        getInfo(id,function(result){
            //对返回的result进行处理
        });
  • 相关阅读:
    个人总结05
    微软拼音的用户体验
    个人总结04
    典型用户和用户场景模式
    个人总结03
    个人总结02
    构建之法阅读笔记06
    个人总结01
    学习进度条——第七周
    WebApi学习总结系列第五篇(消息处理管道)
  • 原文地址:https://www.cnblogs.com/chace/p/4487118.html
Copyright © 2011-2022 走看看