工厂模式初探

以okGO框架来看;
Step1:把http请求框架的共性方法抽取到接口中(也就是上述说的get/post/put/delete这些方法)

1
2
3
4
public interface IRequestManger {
void get(String url,String Canchekey,Object o,IRequestCallback callback);
void Instance(Application o);
}

Step2:用Volley来实现IRequestManager这个接口.

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
public class OKGoManager implements IRequestManger {
public static OKGoManager getInstance() {
return SingleonHolder.INSTANCE;
}
public static class SingleonHolder {
private static final OKGoManager INSTANCE = new OKGoManager();
}
@Override
public void get(String url, String Canchekey, Object o, final IRequestCallback callback) {
OkGo.get(url)
.tag(o)
.cacheKey(Canchekey)
.cacheMode(CacheMode.DEFAULT)
.execute(new StringCallback() {
@Override
public void onSuccess(String s, Call call, Response response) {
callback.onSuccess(s);
}
@Override
public void onError(Call call, Response response, Exception e) {
callback.onFailure(response.body().toString());
}
});
}
@Override
public void Instance(Application o) {
OkGo.init(o);
}
}

Step3:创建一个类来返回IRequestManager请求接口的对象 //工厂类;

1
2
3
4
5
public class IRequestFactory {
public static IRequestManger getRequestManager(){
return OKGoManager.getInstance();
}
}

Step4:调用上述方法进行测试

1
IRequestManager requestManager = RequestFactory.getRequestManager();

接口 a = new 实现该接口的类();

衍生 java的接口是不能被实例化的,然而常见的点击事件中
new OnClickListener(){
……………
}
是用匿名内部类来完成的;