谈谈mvp的思想


1、MVP相对传统的MVC大大的减少了类与类之间的耦合性


2、个人相对MVP的总结大概有三点:

      第一: View层:  view层主要是UI层,主要是接口

public interface LoginView {
    String getUserName();
    String getPassWord();
}

第二个:Model层

Model层需要试想Model的接口,主要是具体的业务实现,如网络请求访问等这些

public class LoginMode implements ILoginInter {
    private static final String TAG = "LoginMode";
    private LoginPresenteImpl loginPresenteImpl;
    public LoginMode(LoginPresenteImpl LoginPresenteImpl){
        loginPresenteImpl = LoginPresenteImpl;
    }
    @Override
    public void login(String username, String password) {
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                loginPresenteImpl.onSuccess();
            }
            @Override
            public void onError(int i, String s) {
                Log.e(TAG, "onError:  " + s );
                loginPresenteImpl.onError();
            }

            @Override
            public void onProgress(int i, String s) {

            }
        });
    }
}
Model层的接口

public interface ILoginInter {

    void login(String username, String password);
}

第三个:Presenter层,presenter需要实现presenter的接口

public class LoginPresenter implements LoginPresenteImpl{
    private  Context context;
    private LoginView loginView;
    private final LoginMode loginMode;
    private static final String TAG = "LoginPresenter";
    public LoginPresenter(LoginView loginView,Context context){
        this.loginView = loginView;
        loginMode = new LoginMode(this);
        this.context = context;
    }
    @Override
    public void login() {
        String userName = loginView.getUserName();
        String passWord = loginView.getPassWord();
        Log.e(TAG, "login: username" + userName + "  " + passWord );
        loginMode.login(userName, passWord);
    }

    @Override
    public void onSuccess() {
        SharedPrefsUtil.setBoolean("is_login",true);
        Log.e(TAG, "onSuccess: " );
        Intent mIntext = new Intent(context, MainActivity.class);
        context.startActivity(mIntext);
    }

    @Override
    public void onError() {
        Log.e(TAG, "onError: " );
    }
}
presenter层的接口

public interface LoginPresenteImpl {
    void login();

    void onSuccess();

    void onError();
}

接下了就是构造方法了:


Model需要在构造方法中有presenter层接口的引用是咧


Present 层需要在构造方法中持有View层的是咧  和Model层的是咧


View层就是我们操作的activity和fragment,需要实现View层的接口


public class LoginActivity extends BaseActivty implements LoginView{
    @BindView(R.id.login_account)EditText mCount;
    @BindView(R.id.login_account_psw)EditText mPsw;
    private LoginPresenteImpl loginPresenteImpl;

    @OnClick(R.id.login_)void loging(){
        login();
    }
    @Override
    public int getLayoutId() {
        return R.layout.activity_login;
    }


    @Override
    protected void initView() {
        loginPresenteImpl = new LoginPresenter(this,this);

    }
    private void login() {
        loginPresenteImpl.login();
    }

    @Override
    public String getUserName() {
        String s = mCount.getText().toString().toString();
        return s;
    }

    @Override
    public String getPassWord() {
        String trim = mPsw.getText().toString().trim();
        return trim;
    }
}







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值