Android架构:主要用于高聚合,低耦合;(通俗讲就是各个功能模块各自为政又不影响APP整体的功能,然后在修改功能的时候,尽可能的不影响其他的业务)
MVC--Model·View·Controller
Model:处理业务逻辑数据,如:网络请求,数据库存取,算法操作;
View:UI布局,如:layout.xml,用于M层的数据结果;
Controller:一般为Activity/fragment,获取V层的数据,并向M层发请求;
图示:
优点:便于理解,开发快速,一定程度隔离业务与UI的耦合度;
缺点:业务复杂,可能到时Controller爆炸,不利于维护迭代;
项目例子:以用户登录为例子
public interfaceUserLoginModel {
voidlogin(String account,String passWord,UserLoginListener userLoginListener);
}
public interfaceUserLoginListener {
voidloginSuccess();
voidloginFail();
}
public classUserLoginModelImplimplementsUserLoginModel {
@Override
public voidlogin(finalString account, finalString passWord, finalUserLoginListener userLoginListener) {
//这里是处理登录的业务逻辑
newHandler().postDelayed(newRunnable() {
@Override
public voidrun() {
if("square".equals(account)&&"123".equals(passWord)){
userLoginListener.loginSuccess();
}else{
userLoginListener.loginFail();
}
}
},3000);
}
}
public classMainActivityextendsAppCompatActivityimplementsView.OnClickListener{
privateEditTexteditAccount;
privateEditTexteditPassword;
privateAppCompatButtonbtnLogin;
privateAppCompatButtonbtnClear;
privateUserLoginModelImplmodel;
privateStringaccount;
privateStringpassword;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
}
private voidinitView(){
editAccount=(EditText)findViewById(R.id.edit_account);
editPassword=(EditText)findViewById(R.id.edit_pwd);
btnLogin=(AppCompatButton)findViewById(R.id.btn_login);
btnClear=(AppCompatButton)findViewById(R.id.btn_clear);
}
private voidinitListener(){
model=newUserLoginModelImpl();
btnLogin.setOnClickListener(this);
btnClear.setOnClickListener(this);
}
@Override
public voidonClick(View v) {
switch(v.getId()){
caseR.id.btn_login:
account=editAccount.getText().toString();
password=editPassword.getText().toString();
if(TextUtils.isEmpty(account)||TextUtils.isEmpty(password)){
Toast.makeText(MainActivity.this,"賬號密碼不能為空",Toast.LENGTH_SHORT).show();
}
model.login(account,password, newUserLoginListener() {
@Override
public voidloginSuccess() {
Toast.makeText(MainActivity.this,"登錄成功",Toast.LENGTH_SHORT).show();
}
@Override
public voidloginFail() {
Toast.makeText(MainActivity.this,"登錄成功",Toast.LENGTH_SHORT).show();
}
});
break;
caseR.id.btn_clear:
break;
}
}
}
最后,此为学习笔记,如有雷同,纯属我++Ta的。。。