初识MVC
MVC:M-Model-模型、V-View-视图、C-Controller-控制器
M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。
V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。
C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层用户输入的数据,控制用户输入,并向Model发送数据请求。
View:对应于布局文件
Model:业务逻辑和实体模型
Controllor:对应于Activity
MVC项目结构
M-Model-模型、V-View-视图、C-Controller-控制器
首先,实体类User
public class User {
private String user;
private String pwd;
public User(String user, String pwd) {
this.user = user;
this.pwd = pwd;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
IUserModel
public interface IUserModel {
void login(String user, String pwd, OnLoginListener loginListener);
}
OnLoginListener
public interface OnLoginListener {
void onSuccess(User user);
void onFailed();
}
UserModel
public class UserModel implements IUserModel {
@Override
public void login(String name, String pwd, OnLoginListener listener) {
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
return;
}
if ("wanghao".equals(name) && "123".equals(pwd)) {
listener.onSuccess(new User(name, pwd));
}else {
listener.onFailed();
}
}
}
MainActivity
public class MainActivity extends AppCompatActivity implements OnLoginListener {
private EditText et_user;
private EditText et_pwd;
private Button bt_login;
private UserModel userModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userModel = new UserModel();
initView();
}
private void initView() {
et_user = (EditText) findViewById(R.id.et_user);
et_pwd = (EditText) findViewById(R.id.et_pwd);
bt_login = (Button) findViewById(R.id.bt_login);
bt_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
userModel.login(et_user.getText().toString(), et_pwd.getText().toString(), MainActivity.this);
}
});
}
@Override
public void onSuccess(User user) {
Toast.makeText(MainActivity.this, "欢迎" + user.getUser(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailed() {
Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
}
}
最后
个人理解,有什么不对的地方还请各位大神指正。