MVP的优势已经比MVC的效率高特别多了,但是里面有一些重复的代码需要我们进行一些封装,这样就可以调用了;
这样就是大致的结构
接下来就开始进行封装
首先是View层 封装的方法 以及我们的View
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
public class MainActivity extends BaseActivity implements IMainView {
private MainPresenter mainPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainPresenter = new MainPresenter();
// this == MainActivity
mainPresenter.attachView(this);
mainPresenter.loadDataFromNet();
}
@Override
public void onSuccess(String data) {
}
@Override
public void onErr(int errCode, String errMsg) {
}
@Override
protected void onDestroy() {
super.onDestroy();
mainPresenter.dettachView();
}
}
然后是Presenter层
public class BasePresenter<V extends IBaseView> {
private V iv;
public void attachView(V v) {
this.iv = v;
}
public void dettachView() {
this.iv = null;
}
public V getView(){
return iv;
}
}
public class MainPresenter extends BasePresenter<IMainView> {
private final ModelTest modelTest;
public MainPresenter() {
modelTest = new ModelTest();
}
public void loadDataFromNet() {
// "ok"
String data = modelTest.getData();
getView().onSuccess(data);
}
}