回调模式

小王内部持有小李,以异步的方式调用小李,问了小李一个问题,问问题的时候,将自己的引用也传给了小李。小李任何时间想回复小王,则使用小王的引用传递消息

Main

package com.test.design.callback;

public class TestMain {
    public static void main(String[] args) {
        Li li = new Li();
        Wang wang = new Wang(li);
        wang.askQuestion("1 + 1 = ?");
    }
}

package com.test.design.callback;

/**
 * 小李
 * @author Ash
 *
 */
public class Li {
    public void executeMessage(CallBack callBack, String question) {
        System.out.println("小王的问题: "+question);

        //模拟小李办自己的事情需要很长时间
        for (int i = 0; i < 10000; i++) {

        }
        String result = "答案是2";
        callBack.solve(result);
    }
}

package com.test.design.callback;
/**
 * 这个是小王
 * 实现了一个回调接口CallBack
 */
public class Wang implements CallBack{
    /** 对小李的引用 */
    private Li li;
    public Wang(Li li) {
        this.li = li;
    }

    /**
     * 小王通过这个方法问小李问题
     * @param question
     */
    public void askQuestion(final String question) {
        //这里用一个线程达到异步的效果
        new Thread(new Runnable() {

            @Override
            public void run() {
                //小王调用小李的方法,在这里注册回调接口
                li.executeMessage(Wang.this,question);
            }
        }).start();
        //小王问完问题可以挂掉电话去打打游戏
        play();
    }
    public void play() {
        System.out.println("你强任你强,我选托比昂");
    }
    /**
     * 小李知道答案后调用此方法告诉小王
     */
    @Override
    public void solve(String result) {
        System.out.println("小李告诉小王答案: "+result);
    }

}

回调接口

package com.test.design.callback;

/**
 * 回调接口
 * @author Ash
 *
 */
public interface CallBack {
    /**
     * 这个是小李知道答案时要调用的函数告诉小王,也就是回调函数
     * @param result 是答案
     */
    public void solve(String result);
}
时间: 2024-12-29 11:46:55

回调模式的相关文章

微信企业号开发之回调模式的接口开发

一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信的信息,转发到用户提供的一个回调接口上,该接口解析用户发送过来的信息,解析后进行相应,而且回调模式中,可以调用的东西不少,扫码,图片,视频,地理位置信息等. 在应用的模式下,选择回调模式,之后,需要设置3个参数(1.回调接口URL:2.token:3.ASESKey),URL就是提供的回调接口,微信

微信企业号回调模式验证与发送消息

最近放假闲着无聊,研究了一下微信企业号, 打算通过企业号做一个运维报警信息发送的功能,记录自己的操作 第一步 注册企业号,网上一搜一大把的教程,这里略过  微信企业号登录地址  https://qy.weixin.qq.com/ 第二步  登录后 点左侧 应用中心 -新建应用 第三步  在第二步第一图中的自建应用下面找到刚刚新建的应用 拉到最下面有一个模式选择,点击回调模式 会看到下图界面 Token 和EncodingAESKey 点击随机获取即可,上面的url需要你有自己的服务地址  你的服

AFHTTPClient的异步回调模式

以前第一个版本,ios的http都用的同步模式,在很多地方会导致线程阻塞,自己开发了一个简易的AFHTTPClient的异步回调模式. 回调的protocol: @protocol MyAFNetworkingResponse <NSObject> @required -(void) MyHttpResponse:(NSString*)ret Type:(NSString*)strType returnData:(NSObject*)retData; @end AFHTTPClient的异步通

微信企业号开发(1)WebAPI在回调模式中的URL验证

微信回调模式的官方文档. 开发语言:C#(微信相关功能代码可以从官网下载) 首先,必须要明确几个参数,这几个参数在微信企业号中,每次调用都会使用到. 1.msg_signature:签名(已加密,加密方法可从官网下载) 2.timestamp:时间戳 3.nonce:随机数 4.echostr:随机字符串(已加密) 注:前面3个参数每次都会自动带上,属于必填项,第4个参数只有在首次校验URL时(意思就是点下图中的“保存”按钮时,可能不准确,先这样理解吧)才会带上. 针对上图的说明: 1.URL:

IOS开发之自定义Button(集成三种回调模式)

前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调,Block回调.具体的内容请参考之前的博客:“Objective-C中的Block回调模式”,“Target-Action回调模式”,“Objective-C中的委托(代理)模式”.在接下来要封装的button中将要用到上面的知识点.之前在做新浪微博中的Cell的时候用到了Block回调来确定是那

JavaScript:回调模式(Callback Pattern)

函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)introduceBugs(): 这种情况下,introduceBugs()被称为回调函数(callback function)或简称为回调(callback:): [javascript] view plaincopyprint? function writeCode(callback) { // do 

如何用php开启企业微信开发的回调模式

猜想: 懵逼 实践: 微信公众号开发的手册中甚至给出了只需要修改几个参数就能使用的范例.企业微信开发中在一个很不显眼的地方放了一个sample. https://work.weixin.qq.com/api/doc#10128 看似很好理解(并不,背后封装了不算简单的加密方法) 获取参数->解密->输出解密后的参数 然而却因为一个函数引用传参知识点的缺失而困扰了许久 public function VerifyURL($sMsgSignature, $sTimeStamp, $sNonce,

微信企业号开发:启用回调模式

微信企业号开发如何启用回调模式?就是简单的登陆PC版微信,点击应用中心,选择需要应用,再点击回调模式启用? 似乎不是这么简单!! 可以看到核心的只有三个URL,Token,EncodingAESKey这三个参数可以随便填写吗?1URL可以随便填写吗? 可以肯定的是,不能随便填写.不信你可以试试.因为点击确定后微信会给这个URL发送信息.因此这个URL必须是外网可以访问的地址.而且后台还必须处理微信发送过来的信息.例如URL 是http://www.hao123.com/可以在外网方法,但点击保存

.net之微信企业号开发(三) 回调模式的接口开发

一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信的信息,转发到用户提供的一个回调接口上,该接口解析用户发送过来的信息,解析后进行相应,而且回调模式中,可以调用的东西不少,扫码,图片,视频,地理位置信息等. 在应用的模式下,选择回调模式,之后,需要设置3个参数(1.回调接口URL:2.token:3.ASESKey),URL就是提供的回调接口,微信

微信公众平台企业号开发—开启回调模式

2014年9月17日,微信发布了期待已久的企业号.网上关于企业号的教程几乎还是0,所以这里分享一下的我的开发经验. 对比于订阅号和服务号的开发,企业号的开发显得更加复杂一点.这大概也是腾讯考虑到企业信息安全性要求比较高的缘故,在消息的收发和一些验证上都增加了加密解密的操作.这就需要开发者认真去阅读官方说明(其实通过官方说明你可以解决几乎所有问题),接下来我开启回调模式的步骤: 1.申请企业号:这个步骤这里就不详细赘述了,可以参考 http://jingyan.baidu.com/article/