回调模式

设计模式-回调模式

常见设计模式分三大类:

  1. 创建模式:
    工厂方法, 抽象工厂, 建造模式, 原型模式, 单例模式5种.
  2. 结构模式:
    适配器模式, 桥梁模式, 代理模式, 装饰模式, 门面模式5种.
  3. 行为模式:
    模板模式, 迭代器模式, 观察者模式, 状态模式, 策略模式5种.

回调模式

应用场景: 回调模式应用的场景很多,使用回调模式可以有效的避免代码冗余/耦合.增加代码的易读性,易扩展性.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.chinaredstar.data.synch.model;

import org.junit.Test;

/**
* Created by xiehui1956(@)gmail.com on 16-12-9.
*/
public class CallbackDemo {

/**
* 回调接口
*/
interface Callback{
void function(String result);
}

/**
* 具体业务封装
*/
class AjaxLoadBookInfo implements Callback{
@Override
public void function(String result) {
System.out.println(result + " book info loading...");
}
}

/**
* 具体业务封装
*/
class AjaxLoadUserInfo implements Callback{

@Override
public void function(String result) {
System.out.println(result + " user info loading...");
}
}

/**
* 业务执行
* @param callback
* @param request
*/
public void executeAjax(Callback callback, String request) {
System.out.println("start");
callback.function(request);
System.out.println("end");
}

@Test
public void main() {
CallbackDemo client = new CallbackDemo();
client.executeAjax(new AjaxLoadBookInfo(), " google browser");
client.executeAjax(new AjaxLoadUserInfo(), " firefox browser");
}

}

说明: 这种方式可以减少executeAjax中的冗余代码,可以将不同的bookInfo, userInfo逻辑独立处理.