• MVP的理解和使用


    MVP大家应该差不多都知道了,他其实是MVC的升华版,差不多是在view和model中加了一个调节器,这样view不能直接调用model中得数据,而是通过presenter来进行操作,此外Presenter与View和model的交互使用接口定义操作可以进一步达到松耦合也可以通过接口更加方便的进行测试。可以看一下流程图

    算了不想写了,直接上代码吧,实在是懒得写了,这也没有保存功能,服死了。

    首先定义View :

    [代码]java代码:

    1
    2
    3
    4
    5
    public interface MainView<t> {
        void initView();
        void showData(T t);
     
    }</t>

    [代码]java代码:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public class MainActivity extends AppCompatActivity implements MainView<model>{
        private MainPresenter mainPresenter;
        private TextView textview;
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_mains);
            initView();
        }
     
        @Override
        public void initView() {
            textview = (TextView) findViewById(R.id.textview);
            mainPresenter = new MainPresenter(this);
            mainPresenter.loadData();
        }
     
        @Override
        public void showData(Model model) {
            textview.setText(model.getName());
        }
     
    }</model>

    然后定义presenter:

    [代码]java代码:

    1
    2
    3
    4
    5
    public interface Presenter<t> {
        void loadData();
        void loadDataSuccess(T t);
        void loadFail();
    }</t>

    [代码]java代码:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class MainPresenter implements Presenter<model>{
        private MainView mainView;
        private MainModel mainModel;
     
        public MainPresenter(MainView mainView) {
            this.mainView = mainView;
            mainModel = new MainModel(this);
        }
     
        @Override
        public void loadData() {
            mainModel.getData();
        }
     
        @Override
        public void loadDataSuccess(Model model) {
            mainView.showData(model);
        }
     
        @Override
        public void loadFail() {
     
        }
    }</model>

    最后是model的定义:

    [代码]java代码:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    public class Model {
        String name;
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
    }

    [代码]java代码:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    public class MainModel {
        MainPresenter mainPresenter;
     
        public MainModel(MainPresenter mainPresenter) {
            this.mainPresenter = mainPresenter;
        }
        //从服务器中获取数据
        public void getData(){
            //这个方法主要是获取数据如果成功则调用MainPresenter的loadDataSuccess 方法
            //如果失败就调用MainPresenter的loadFail()方法
        }
    }

    从代码中可以看出model和view不会直接联系,都是通过presenter。各个分层更加明细。

    刚刚发表了一篇,结果没有保存到,只能重新写了,麻烦可不可以做成没有提交上,就给用户保存的功能啊。

  • 相关阅读:
    Linux内核分析— —操作系统是如何工作的(20135213林涵锦)
    【BARTS计划】【Share_Week1】社交产品思考
    【BARTS计划】【Tips_Week1】20190331更新
    【BARTS计划】【Review_Week1】Google Docs 成为青少年们喜爱的聊天 app
    【学习博客】Python学习初体验
    《构建之法》读书笔记5
    《构建之法》8&16
    《构建之法》读书笔记4
    《构建之法》读书笔记3
    《构建之法》读书笔记2
  • 原文地址:https://www.cnblogs.com/android-blogs/p/5710417.html
Copyright © 2020-2023  润新知