android MVC

我对于这点知识很模糊,很混乱,这里只是记录我能够理解的MVC


MVC概念

http://www.2cto.com/kf/201506/405766.html

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层。

实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上

这里写图片描述

M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。

V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。 

C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器。  


实例说明:http://cinderella7.blog.51cto.com/7607653/1281696

android中的AdapterView控件的使用很容易理解MVC。

  一:AdapterView-->V(视图)

1:作用

以列表的形式显示数据。

2:内容

AdapterView的内容一般是包含多项相同格式资源的列表。

3:分类

(1)ListView:列表,其中只能含有一个控件TextView,

(2)Spinner:下拉列表,给用户提供选择

(3)Gallery:缩略图,已经被水平的ScrollView和ViewPicker取代,但也还算常用,是一个可以把子项以中心锁定,水平滚动的列表

(4)GridView:网格图,以表格形式显示资源,可以左右滑动的

4:事件

(1)用户单击列表项事件:为列表加载setOnItemClieckListener监听

(2)用户长按事件:为列表加载setOnItemLongClieckListener监听


二:Adapter-->C(控制器)

1:作用

把数据源中数据以某种样式(xml文件)显示在视图中。

2:分类

(1)ArrayAdapter:他只能处理列表项内容全是文本的情况。

       ◆数据源:数组或者List<String>对象或者其他

(2)SimpleAdapter: 他不仅可以处理列表项全是文本的情况,当列表项中还有其他控件时,同样可以处理。

       ◆数据源:只能为List<Map<“键”,“值”>>形式的数据

(3)自定义Adapter:根据xml文件中定义的样式惊醒列表项的填充,适用性最强。



三:数据--->M(模型)


 总结

用AdapterView来解释MVC就是:Adapter(Controller)将数据M(Model)显示在视图AdapterView(View)上,

所以MVC主要就是:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上


MVC的思想用在组织代码上


Step1:View视图

抽取所有界面元件的声明和定义,整合到单独一个函数findViews()中;

 <span style="white-space:pre">	</span>private Button button_calc;
<span style="white-space:pre">	</span>private EditText field_height;
<span style="white-space:pre">	</span>private EditText field_weight;
<span style="white-space:pre">	</span>private TextView view_result;
<span style="white-space:pre">	</span>private TextView view_suggest;

<span style="white-space:pre">	</span>// 定义
<span style="white-space:pre">	</span>private void findViews() {
<span style="white-space:pre">		</span>button_calc = (Button) findViewById(R.id.submit);
<span style="white-space:pre">		</span>field_height = (EditText) findViewById(R.id.height);
<span style="white-space:pre">		</span>field_weight = (EditText) findViewById(R.id.weight);
<span style="white-space:pre">		</span>view_result = (TextView) findViewById(R.id.result);
<span style="white-space:pre">		</span>view_suggest = (TextView) findViewById(R.id.suggest);
<span style="white-space:pre">		</span>}

Step2:Controller

控制器抽取程序的逻辑(即界面元件的处理逻辑),整合到函数setListensers()中;

private void setListensers() {
<span style="white-space:pre">	</span>button_calc.setOnClickListener(calcBMI);
   }
Step3:Model
把数据库的操作全部独立成几个类,这个时候只需要访问对应的方法就可以实现操作数据的功能

(这里详情:Android数据存储之:SQLite数据库存储


MVC在代码重构上的使用,使得代码读写容易,比如:

onCreate()方法:

public void onCreate(Bundle savedInstanceState) {
<span style="white-space:pre">	</span>super.onCreate(savedInstanceState);
<span style="white-space:pre">	</span>setContentView(R.layout.main);
<span style="white-space:pre">	</span>findViews();
<span style="white-space:pre">	</span>setListensers();
   }
这是我暂时理解的意思

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值