1.RetrofitUtils
public class RetrofitUtils {
private static volatile RetrofitUtils instance;
private final Retrofit retrofit;
private RetrofitUtils(String baseurl) {
retrofit = new Retrofit.Builder()
.baseUrl(baseurl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
public static RetrofitUtils getInstance(String baseurl) {
if (instance == null) {
synchronized (RetrofitUtils.class) {
if (instance == null) {
instance = new RetrofitUtils(baseurl);
}
}
}
return instance;
}
public Retrofit getretrofit(){
return retrofit;
}
}
2.ApiService
public interface ApiService {
//http://120.27.23.105/product/getCarts 购物车
@GET("product/getCarts")
Flowable<CarBean> getcars(@QueryMap Map<String,String> map);
//http://120.27.23.105/product/deleteCart 删除
@GET("product/deleteCart")
Flowable<delBean> delete(@QueryMap Map<String,String> map);
}
3.IModel
public interface IModel {
void get(String baseurl, Map<String, String> map, String tag);
}
4.Model
public class Model implements IModel {
private MyPresenter presenter;
public Model(MyPresenter presenter) {
this.presenter = presenter;
}
@Override
public void get(String baseurl, Map<String, String> map, String tag) {
ApiService service = RetrofitUtils.getInstance(baseurl).getretrofit().create(ApiService.class);
if (tag.equals("getcars")){//购物车
Flowable<CarBean> flowable = service.getcars(map);
presenter.getData(flowable,tag);
}else if (tag.equals("del")){//删除
Flowable<delBean> flowable = service.delete(map);
presenter.getData(flowable,tag);
}
}
}
5.IPresenter
public interface IPresenter {
void get(String baseurl, Map<String, String> map, String tag);
}
6.MyPresenter
public class MyPresenter implements IPresenter{
private IView iv;
private DisposableSubscriber subscriber;
public MyPresenter(IView iv) {
this.iv = iv;
}
@Override
public void get(String baseurl, Map<String, String> map, String tag) {
Model model = new Model(this);
model.get(baseurl,map,tag);
}
public void getData(Flowable flowable, final String tag){
subscriber = (DisposableSubscriber) flowable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber() {
@Override
public void onNext(Object o) {
iv.onSuccess(o,tag);
}
@Override
public void onError(Throwable t) {
iv.onFailed((Exception) t);
}
@Override
public void onComplete() {
}
});
}
//防止内存泄漏
public void detatch(){
if (iv != null) {
iv = null;
}
if(subscriber !=null){
if(!subscriber.isDisposed()){
subscriber.dispose();
}
}
}
}
7.IView
public interface IView {
void onSuccess(Object o, String tag);
void onFailed(Exception e);
}