前言:其实在Android studio创建一个项目的模式也是一个简化的mvc模式,不过activity中有太多太多的代码,因为activity中包含了model层和controller层,下面详细解析一下MVC模式,并用一个小例子带大家去理解。
MVC模式介绍:
MVC是Model-View-Controller的简称
Model:模型层,负责处理数据的加载或者存储
View:视图层,负责界面数据的展示,与用户进行交互
Controller:控制器层,负责逻辑业务的处理
MVC模式的特点:
1.耦合性低;
2.可扩展性好;
3.模块职责划分明确
MVC模式的不足:
XML文件作为视图层,所做的事情比较有限,所以Activity作为Controller同时也承担了一部分的View视图显示工作,导致Activity代码庞大,维护困难
接下来就看一个非常简单的小例子:
1.项目架构
2.首先定义一个person的bean,这个都见多了,没什么好说的
public class Person {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3.定义一个回调接口 OnPersonListener,对应的一个成功方法和失败方法
public interface OnPersonListener {
void onSuccess(Person person);
void onFailure();
}
4.定义一个接口 PersonModle
public interface PersonModle {
void Login(Person person,OnPersonListener onPersonListener);
}
4.定义一个实现类 PersonModelImpl,实现PersonModle接口,在方法中添加逻辑
public class PersonModelImpl implements PersonModle {
//在此处写相应逻辑
@Override
public void Login(Person person, OnPersonListener onPersonListener) {
if(person.getUsername().equals("123")&&person.getPassword().equals("123")){
onPersonListener.onSuccess(person);
}else {
onPersonListener.onFailure();
}
}
}
5.再来看看activity中的代码
public class MainActivity extends AppCompatActivity implements OnPersonListener,View.OnClickListener {
private EditText et_username;
private EditText et_password;
private Button btn_login;
private String username;
private String password;
private PersonModelImpl personModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
personModel = new PersonModelImpl();
}
//控件初始化
private void init() {
et_username = (EditText)findViewById(R.id.et_username);
et_password = (EditText)findViewById(R.id.et_password);
btn_login = (Button)findViewById(R.id.btn_login);
btn_login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
username = et_username.getText().toString();
password = et_password.getText().toString();
Person person = new Person();
person.setUsername(username);
person.setPassword(password);
personModel.Login(person,this);
}
@Override
public void onSuccess(Person person) {
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure() {
Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
}
}
可以看到虽然逻辑非常简单,但是哪一块需要做什么事情是非常清晰的。但其实modle层和view层耦合性还是比较大的,在IOS中的MVC模式则不存在这个问题。所以其实Android最适合的模式是MVP模式,但是也要看具体项目吧,个人认为MVP模式容易类爆炸,在网上有很多比MVC优秀但比MVP简单的模式,如果是个人撸的话就要快速开发嘛,可以去找找。