//setorget…

publicUser(Stringname,Stringpassword){

this.name=name;

this.password=password;

}

}

3.MVCLoginActivity

//用户点击事件

mvcBinding.mcvLogin.btnLogin.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

user.setName(mvcBinding.mcvLogin.etAccount.getText().toString());

user.setPassword(mvcBinding.mcvLogin.etPassword.getText().toString());

login(user);

}

});

//逻辑处理

privatevoidlogin(Useruser){

if(!user.getName().isEmpty()&&!user.getPassword().isEmpty()){

if(user.getName().equals(“scc001”)&&user.getPassword().equals(“111111”))

{

Toast.makeText(this,“登录成功”,Toast.LENGTH_SHORT).show();

}else{

Toast.makeText(this,“登录失败”,Toast.LENGTH_SHORT).show();

}

}else{

Toast.makeText(this,“登录失败”,Toast.LENGTH_SHORT).show();

}

}

MVP实例


代码结构

1.Model层

实体类bean,同MVC中的User类,就不贴代码浪费大家时间了。

Model层所要执行的业务逻辑

/**

*功能:接口,表示Model层所要执行的业务逻辑

*/

publicinterfaceLoginModel{

//User实体类;OnLoginFinishedListenerpresenter业务逻辑的返回结果

voidlogin(Useruser,OnLoginFinishedList

enerlistener);

}

实现类(实现LoginModel接口)

/**

*功能:实现Model层逻辑

*/

publicclassLoginModelImplimplementsLoginModel{

//第4步:验证帐号密码

@Override

publicvoidlogin(Useruser,OnLoginFinishedListenerlistener){

if(user.getName().isEmpty()||!user.getName().equals(“scc001”)){

//第5步:Model层里面回调Presenter层listener

listener.onUserNameError();

}elseif(user.getPassword().isEmpty()||!user.getPassword().equals(“111111”)){

//第5步:Model层里面回调Presenter层listener

listener.onPasswordError();

}else{

//第5步:Model层里面回调Presenter层listener

listener.onSuccess();

}

}

}

2.Presenter层

当Model层得到请求的结果,回调Presenter层,让Presenter层调用View层的接口方法。

/**

*功能:当Model层得到请求的结果,回调Presenter层,让Presenter层调用View层的接口方法。

*/

publicinterfaceOnLoginFinishedListener{

voidonUserNameError();

voidonPasswordError();

voidonSuccess();

}

完成登录的验证,以及销毁当前View。

/**

*功能:登录的Presenter的接口,实现类为LoginPresenterImpl,

*完成登录的验证,以及销毁当前View。

*/

publicinterfaceLoginPresenter{

//完成登录的验证

voidverifyData(Useruser);

//销毁当前View

voidonDestroy();

}

Presenter实现类,引入 LoginModel(model)和LoginView(view)的引用

/**

*功能:实现类,引入LoginModel(model)和LoginView(view)的引用

*/

publicclassLoginPresenterImplimplementsOnLoginFinishedListener,LoginPresenter{

//View层接口

privateLoginViewloginView;

//Model层接口

privateLoginModelloginModel;

publicLoginPresenterImpl(LoginViewloginView){

this.loginView=loginView;

this.loginModel=newLoginModelImpl();

}

//第6步:通过OnLoginFinishedListener验证结果回传到Presenter层

@Override

publicvoidonUserNameError(){

if(loginView!=null){

//第7步:通过loginView回传到View层

loginView.setUserNameError();

loginView.hideProgress();

}

}

//第6步:通过OnLoginFinishedListener验证结果回传到Presenter层

@Override

publicvoidonPasswordError(){

if(loginView!=null){

//第7步:通过loginView回传到View层

loginView.setPasswordError();

loginView.hideProgress();

}

}

//第6步:通过OnLoginFinishedListener验证结果回传到Presenter层

@Override

publicvoidonSuccess(){

if(loginView!=null){

//第7步:通过loginView回传到View层

loginView.success();

loginView.hideProgress();

}

}

@Override

publicvoidverifyData(Useruser){

if(loginView!=null){

loginView.showProgress();

}

//第3步:调用model层LoginModel接口的login()方法

loginModel.login(user,this);

}

@Override

publicvoidonDestroy(){

loginView=null;

}

}

3.View层

布局文件同MVC中的View层,就不贴代码浪费大家时间了。

Presenter与View交互是通过接口。

/**

*功能:Presenter与View交互是通过接口。

*接口中方法的定义是根据Activity用户交互需要展示的控件确定的。

*/

publicinterfaceLoginView{

//login是个耗时操作,加载中(一般用ProgressBar)

voidshowProgress();

//加载完成

voidhideProgress();

//login账号失败给出提示

voidsetUserNameError();

//login密码失败给出提示

voidsetPasswordError();

//login成功

voidsuccess();

}

MVPLoginActivity

/**

*功能:需要实现LoginView接口。

*/

publicclassMVPLoginActivityextendsAppCompatActivityimplementsLoginView{

LoginPresenterImplloginPresenterImpl;

@Override

protectedvoidonCreate(@NullableBundlesavedInstanceState){

//创建一个Presenter对象

loginPresenterImpl=newLoginPresenterImpl(MVPLoginActivity.this);

//第1步:用户点击登录

mvpBinding.mvpLogin.btnLogin.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

Useruser=newUser();

user.setName(mvpBinding.mvpLogin.etAccount.getText().toString());

user.setPassword(mvpBinding.mvpLogin.etPassword.getText().toString());

//第2步:调用Presenter接口中的验证方法

loginPresenterImpl.verifyData(user);

}

});

}

@Override

publicvoidshowProgress(){

//加载中

}

@Override

publicvoidhideProgress(){

//加载完成

}

@Override

publicvoidsetUserNameError(){

//第7步:通过loginView回传到View层

//账号错误

Toast.makeText(this,“登录失败”,Toast.LENGTH_SHORT).show();

}

@Override

publicvoidsetPasswordError(){

//第7步:通过loginView回传到View层

//密码错误

Toast.makeText(this,“登录失败”,Toast.LENGTH_SHORT).show();

}

@Override

publicvoidsuccess(){

//第7步:通过loginView回传到View层

Toast.makeText(this,“登录成功”,Toast.LENGTH_SHORT).show();

//登录成功

}

@Override

protectedvoidonDestroy(){

super.onDestroy();

loginPresenterImpl.onDestroy();

}

}

MVVM实例


1.Model层

实体类bean,继承BaseObservable

publicclassUserextendsBaseObservable{

privateStringname;

privateStringpassword;

publicUser(){

}

//BR的域则是通过在get方法上加@Bindable生成的

@Bindable

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

//刷新UI

//BR的域则是通过在get方法上加@Bindable生成的

notifyPropertyChanged(BR.name);

}

@Bindable

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

//刷新UI

notifyPropertyChanged(BR.password);

}

publicUser(Stringname,Stringpassword){

this.name=name;

this.password=password;

最后

希望本文对你有所启发,有任何面试上的建议也欢迎留言分享给大家。

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
assword(Stringpassword){

this.password=password;

//刷新UI

notifyPropertyChanged(BR.password);

}

publicUser(Stringname,Stringpassword){

this.name=name;

this.password=password;

最后

希望本文对你有所启发,有任何面试上的建议也欢迎留言分享给大家。

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

[外链图片转存中…(img-7o3b6zdT-1647754367151)]

好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

[外链图片转存中…(img-9sRSZSkk-1647754367151)]

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!