MVP、MVC

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层处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值