java回调模式

/**
 * Created by liuxd on 2015-10-23.
 */
public class CallBackTest {

    /**
     输出:
     客户端执行...
     服务器执行...
     客户端执行回调函数 message(服务器返回信息)

     执行顺序:
     客户端发送信息sendMsg->服务器处理信息handler->服务器调用客户端回调函数callBack
     */
    public void test() {
        Server server = new Server();
        Client client = new Client(server);

        client.sendMsg();
    }

    class Server {

        public void handler(CallBack callBack,Object obj){
            System.out.println("服务器执行...");
            callBack.callBack(obj);
        }
    }

    class Client implements CallBack{

        private Server server;
        public Client(Server server) {
            this.server = server;
        }

        public void sendMsg(){
            System.out.println("客户端执行...");
            new Thread(new Runnable() {
                @Override
                public void run() {
                    // 将this对象传入
                    server.handler(Client.this,"message(服务器返回信息)");
                }
            }).start();
        }

        @Override
        public void callBack(Object obj) {
            System.out.println(String.format("客户端执行回调函数 %s",obj));
        }
    }

    interface CallBack{
        void callBack(Object obj);
    }
}

你可能感兴趣的:(java回调模式)