android下的MVP架构

android下的MVP架构

1. MVP概述

MVP代表Model,View和Presenter。

View层负责处理用户事件和视图部分的展示。在Android中,它可能是Activity或者Fragment类。

Model层负责访问数据。数据可以是远端的Server API,本地数据库或者SharedPreference等。

Presenter层是连接(或适配)View和Model的桥梁。

2. MVC 和MVP的区别

网上关于MVP的文章数不胜数,下面简单说下MVP和MVC架构的区别:

MVC和MPV的区别

  • 两者最明显的区别:
    • MVC允许Model和View进行直接交互,MVP中,Model和View直接的交互由Presenter完成。
    • Presenter和View之间是通过接口交互的。

3. 简单的案例:

  • MVC包结构:

MVC包结构

  • Model:
    * Model接口:
public interface INetWork {
            /**
             * 判断网络是否可用
             */
            boolean isNetWorkOk(Context context);

        }
  • Model实现:
        public class INetWorkImpl implements INetWork {

        /**
         * 返回网络是否可用
         *
         * @param context
         * @return
         */
        @Override
        public boolean isNetWorkOk(Context context) {
            ConnectivityManager connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connectivityManager == null) {
                return false;
            } else {
                NetworkInfo info = connectivityManager.getActiveNetworkInfo();
                if (info == null) {
                    return false;
                } else {
                    if (info.isAvailable()) {
                        return true;
                    }
                }
            }
            return false;
        }
        }
  • View:
    • View接口:
    public interface ISplashView {

            /**
             * 显示加载框
             */
            void showLoadingDialog();

            /**
             * 进入下一个页面
             */
            void startNextActivity();

            /**
             * 提示网络错误
             */
            void showNetWorkError();

            /**
             * 隐藏加载框
             */
            void hideLoadingDialog();
        }
片


  • View实现:

Activity实现View接口,实现相关接口。

public class SplashActivity extends Activity implements ISplashView {
             private SplashPresenter splashPresenter;

                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
                    splashPresenter = new SplashPresenter(this);
                }


                @Override
                protected void onResume() {
                    splashPresenter.doUiLogic(this);
                    super.onResume();
                }
                @Override
                public void showLoadingDialog() {
                    System.out.println("--------------showLoadingDialog-------------");
                }

                @Override
                public void startNextActivity() {
                    System.out.println("-------------startNextActivity-------------");

                }

                @Override
                public void showNetWorkError() {
                    System.out.println("-------------showNetWorkError-------------");

                }

                @Override
                public void hideLoadingDialog() {
                    System.out.println("-------------showNetWorkError-------------");

                }
            }


  • Presenter
    • Presenter:

Presenter 接口里面有Model接口和View接口。作为Model和View接口的交互桥梁。
Model和View的交互通过接口完成,具体实现在各自的实现类完成。
public class SplashPresenter {

                //面向接口编程
                INetWork mInetWork;
                ISplashView mISplashView;

                public SplashPresenter(ISplashView iSplashView) {
                    super();
                    mInetWork = new INetWorkImpl();
                    this.mISplashView = iSplashView;
                }

                public void doUiLogic(Context context) {
                    /**
                     * 用户进入splash界面
                     * 判断网络是否存在->显示加载框
                     * 如果存在,进入下一个页面
                     * 如果不存在,提示网络错误,隐藏加载框
                     */

                    mISplashView.showLoadingDialog();
                    if (mInetWork.isNetWorkOk(context)) {
                        mISplashView.startNextActivity();
                    } else {
                        //网络不可用
                        mISplashView.showNetWorkError();
                    }
                    mISplashView.hideLoadingDialog();
                }
            }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值