MVP:
- MVP 1.代码简洁 2.降低耦合,方便维护.MVP优点分为Model、Presenter、View。缺点是Contract:MVP在实现代码简洁的同时,额外增加了大量的接口、类,不方便进行管理,于是Contract就登场了。
public class DataModel {
List<String> data = new ArrayList<>();
ModelInterface mCallback;
public DataModel(ModelInterface mCallback){
this.mCallback = mCallback;
}
public void getData(){
for (int i = 0; i < 100; i++) {
data.add(i + "item");
}
mCallback.loadSuccess(data);
new AsyncTask<String,Integer, List<String> >(){
@Override
protected List<String> doInBackground(String... strings) {
for (int i = 0; i < 100; i++) {
data.add(i + "item");
}
return data;
}
@Override
protected void onPostExecute(List<String> list) {
super.onPostExecute(list);
mCallback.loadSuccess(list);
}
};
/* Observable<List<String>> observable = Observable.create(new ObservableOnSubscribe<List<String>>() {
@Override
public void subscribe(ObservableEmitter<List<String>> e) throws Exception {
for (int i = 0; i < 100; i++) {
data.add(i + "item");
}
e.onNext(data);
}
});*/
/*
Observer observer = new Observer<List<String>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<String> strings) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
*/
// observable.subscribe(observer);
}
}
public class MvpPrenter implements ModelInterface {
DataModel dataModel = new DataModel(this);
MvpView mvpView ;
public MvpPrenter(MvpView mvpView){
this.mvpView = mvpView;
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void loadSuccess(List<String> data) {
mvpView.setListItem(data);
data.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
// Log.i("loadSuccess",s);
System.out.println("数据是:" + s);
}
});
}
@Override
public void loadFailed() {
}
}
public class MainActivity extends AppCompatActivity implements MvpView{
private MvpPrenter mvpPrenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mvpPrenter = new MvpPrenter(this);
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void setListItem(List<String> data) {
data.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
// Log.i("loadSuccess",s);
System.out.println("数据是:" + s);
}
});
}
}
MVC:
- mvc是model,view,controller的缩写,mvc包含三个部分:模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。