V層
/**
* Activity UI 更新接口示例
*/
public interface MainPageView{
void showToast(String msg);
}
P層
/**
* Presenter抽象接口
*/
public interface Presenter<T> {
void attachView(T view);
void detachView();
}
M層
/**
* 數(shù)據(jù)轉(zhuǎn)換器
*/
public interface MainInfoInteractor{
/**
* 回調(diào)數(shù)據(jù)回傳至P層
*/
static interface Callback{
void onResult(String json);
}
void loadData(String requestParamet, Callback callback);
void loadData(String requestParamet);
}
V層接口實(shí)現(xiàn)
在Activity/Fragment中實(shí)現(xiàn)姐浮,并獲取Peraenter對(duì)象
關(guān)系流程:V-->P
public class MainActivity extends AppCompatActivity implements MainPageView{
private MainPresenter mPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPresenter = new MainPresenter(this);
mPresenter.attachView(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
}
@Override
public void showToast(String msg) {
...
}
}
P層接口實(shí)現(xiàn)
實(shí)現(xiàn)Presenter接口與M中的Callback接口,并接收View對(duì)象
關(guān)系流程:V-->P-->M-->P-->V
public class MainPresenter implements Presenter<MainPageView>, MainInfoInteractor.Callback{
private Context mContext;
private MainPageView mView;
private RemoteMainInfoInteractor mInteractor;
public MainPresenter(Context context){
this.mContext = context;
mInteractor = new RemoteMainInfoInteractor (this);
}
/**
* Activity中調(diào)用的方法示例
*/
public void loadData(String paramet){
mInteractor.loadData(paramet);
}
@Override
public void onResult(String json){
if(mView != null){
mView.showToast(json);
}
}
@Override
public void attachView(MainPageView view){
this.mView = view;
}
@Override
public void detachView(){
this.mView = null;
}
}
M層接口實(shí)現(xiàn)
關(guān)系流程:M-->P
public class RemoteMainInfoInteractor implements MainInfoInteractor{
private Callback mCallback;
public RemoteMainInfoInteractor(Callback callback){
this.mCallback = callback;
}
@Override
public void loadData(String paramet, Callback callback){
...
String json = ...;
if(callback != null){
callback.onResult(json);
}
}
@Override
public void loadData(String paramet){
...
String json = ...;
if(mCallback != null){
mCallback.onResult(json);
}
}
}