本文主要是介绍深入浅出Android中的MVP模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MVP模式是在MVC模式的基础之上改进而来的。MVP模式分为:model,view,presenter三部分。三部分的关系如下图所示:
其中PresenterCompl实现IPresenter接口,PresenterCompl中的方法要改变view时通过调用IView中的方法来实现。Model层为PresenterCompl提供数据。
也就是说之前MVC中view的控制都是在activity中实现,但是MVP中对于view的控制在PresenterCompl中实现,但是PresenterCompl又不能够直接的操作view,就通过IView内中的方法来间接的实现控制。
下面来看一个用户登录实现MVP模式的例子:
由上面可以看出View和PresenterCompl和ILoginView的关系。
下面给出整个项目的代码:
UserBean:
public class UserBean {String name;String password;public UserBean(String name, String password) {this.name = name;this.password = password;}public String getName() {return name;}public String getPassword() {return password;}
}
ILoginPresenter:
public interface ILoginPresenter {void clear();void doLogin(String name,String password);
}
ILoginPresenterCompl:
public class ILoginPresenterCompl implements ILoginPresenter{private ILogView iLogView;private UserBean userBean;public ILoginPresenterCompl(ILogView view) {iLogView=view;userBean=new UserBean("hanking","123456");}@Overridepublic void clear() {iLogView.onClearText();}@Overridepublic void doLogin(String name, String password) {if (name.equals(userBean.getName())&&password.equals(userBean.getPassword())){iLogView.onLoginResult(true);}else{iLogView.onLoginResult(false);}}
}
ILogView:
public interface ILogView {void onClearText();void onLoginResult(boolean result);
}
LoginActivity:
public class LoginActivity extends AppCompatActivity implements ILogView,View.OnClickListener{private EditText name,password;private Button mLogin,mClear;private ILoginPresenter loginPresenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);loginPresenter=new ILoginPresenterCompl(this);InitView();}public void InitView(){name=(EditText)findViewById(R.id.name);password=(EditText)findViewById(R.id.password);mClear=(Button)findViewById(R.id.Clear);mLogin=(Button)findViewById(R.id.mLogin);mLogin.setOnClickListener(this);mClear.setOnClickListener(this);}@Overridepublic void onClearText() {name.setText("");password.setText("");}@Overridepublic void onLoginResult(boolean result) {if (result==true){Toast.makeText(this,"登录成功!",Toast.LENGTH_SHORT).show();}else if (result==false){Toast.makeText(this,"登录失败!",Toast.LENGTH_SHORT).show();}}@Overridepublic void onClick(View v) {int id=v.getId();String uname=name.getText().toString();String upassword=password.getText().toString();switch (id){case R.id.Clear:loginPresenter.clear();break;case R.id.mLogin:loginPresenter.doLogin(uname,upassword);break;}}
}
由上面代码可以知道:IView中负责View的变化,IPresenterCompl中负责对于View中的逻辑控制,也就是说当view要改变时通过IPresenterCompl调用IView中的方法来实现。UserBean中主要是数据对象。
源码下载地址(Android stdio可直接运行)
这篇关于深入浅出Android中的MVP模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!