Android架构--MVC

Android架构:主要用于高聚合,低耦合;(通俗讲就是各个功能模块各自为政又不影响APP整体的功能,然后在修改功能的时候,尽可能的不影响其他的业务)

MVC--Model·View·Controller

Model:处理业务逻辑数据,如:网络请求,数据库存取,算法操作;

View:UI布局,如:layout.xml,用于M层的数据结果;

Controller:一般为Activity/fragment,获取V层的数据,并向M层发请求;

图示:

Android架构--MVC_第1张图片

优点:便于理解,开发快速,一定程度隔离业务与UI的耦合度;

缺点:业务复杂,可能到时Controller爆炸,不利于维护迭代;

项目例子:以用户登录为例子

Android架构--MVC_第2张图片

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的。。。

你可能感兴趣的:(Android架构--MVC)