您的位置:首页 > 移动开发 > Android开发

Android MVC

2016-07-22 12:13 387 查看
最近,闲来无事总在想,android到底在学什么,好多框架都已经封装好,我们只是拿来用而已。布局?看源码,理解相关知识点?其实,我也不知道,但唯一了解的是,现在大的项目工程中,一个好的框架,好的设计模式,能减少很大的工作量。因此接下来两篇博客来学习一下Android中常用的两种框架设计模式 MVC和MVP。先我们来看看MVC 模式。



首先看Activity(这里是控制层):

public class MainActivity extends AppCompatActivity implements ViewUpdaLister{

EditText editText;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//初始化控件
editText= (EditText) findViewById(R.id.my_edit);
button= (Button) findViewById(R.id.button);
final MyMoudle myMoudle=new MyMoudle();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myMoudle.getData(editText.getText().toString(),MainActivity.this);
}
});

}

@Override
public void getSum(String sum) {
editText.setText(sum);
}


}

从上面代码可以看到,Activity持有了MyModel模型的对象,当用户有点击Button交互的时候,Activity作为Controller控制层读取View视图层EditTextView的数据,然后向Model模型发起数据请求,也就是调用MyModel对象的方法 getData()方法。当Model模型处理数据结束后,通过接口ViewUpdaLister通知View视图层数据处理完毕,View视图层该更新界面UI了。至此,整个MVC框架流程就在Activity中体现出来了。

Mould层(业务逻辑处理):

public class MyMoudle implements BaseMoudle {

@Override
public void getData(String i, ViewUpdaLister viewUpdaLister) {

int sum=Integer.parseInt(i)+100;

viewUpdaLister.getSum(sum+"");
}


}

通知更新view层的接口

public interface ViewUpdaLister {

void getSum(String sum);

}

总结:

在Android项目中,业务逻辑,数据处理等担任了Model(模型)角色,XML界面显示等担任了View(视图)角色,Activity担任了Contronller(控制器)角色。contronller(控制器)是一个中间桥梁的作用,通过接口通信来协同 View(视图)和Model(模型)工作,起到了两者之间的通信作用。

在MVC模式中我们发现,其实控制器Activity主要是起到解耦作用,将View视图和Model模型分离,虽然Activity起到交互作用,但是找Activity中有很多关于视图UI的显示代码,因此View视图和Activity控制器并不是完全分离的,造成了Activity既像View又像Controller(当然了Data-Binder的出现,可能会让View更像View吧),那下篇文章就讲MVP模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: