zoukankan      html  css  js  c++  java
  • Android 中的MVC与数据流动

    今天看了一个Android的Training生命周期转换的例子,顿觉得他的设计非常巧妙,我的分析如下:

             1.在com.example.android.lifecycle包中有:

                        3个正常的全屏activity,一个类似dialog的activity

             2.在com.example.android.lifecycle.util包中有:

                        StatusTracker.java, 用于将activity产生的已执行的周期函数和当前的状态存储在两个list中

                        Utils.java, 用一个线程动态的更新activity中的两个显示当前周期函数调用栈帧和当前activity所处的状态

             当读到这个代码时,觉得写的很顺意,很快就知道这是怎么回事儿,我把它归结为:

                        activity中产生数据(消息),切换状态

                        StatusTracker.java 存储数据(消息)

                        Utils.java 读取或是说消费数据,也可以说是将消息展示出来。

              这似乎和出名的MVC相像,但有不全像,但此种设计确非常的清晰,而且非常的高效

              这里把数据的产、存、消分开写,思路很不错

              

              在android的开发中,我觉得也应用到MVC,他将数据与逻辑分离,这样看起来思路清晰

              Activity无时无刻不在与用户接触,接受用户的事件,数据等,然后响应,做出一定的改变,

              对此,我觉得应该也把相应的数据和逻辑分出来,这样不至于第二次看代码时,还不知道这

              部分是干嘛用的,还得苦心思去冥想这个类在此扮演了什么角色。

                Android中,呈现数据的效果无疑不是xml文件,这个可以做为view,没有逻辑

                在activity中有一堆的事件监听,我认为可以把获得用户的事件的消息分离出来,另外写一个

               包或类控制器来处理,监听事件中只负责接受消息,将消息传入控制器,根据控制器来更新view

              模型当然是独立的了,有控制器来连接,主要用来做数据的存储、封装等

             

              总的来说,xml文件为试图view ,监听器做为控制器的一部分, 而模型应当独立出来,这样我觉得代码 

              的维护就比较简单了。

             

  • 相关阅读:
    Cypress系列(32)- url() 命令详解
    Cypress系列(31)- title() 命令详解
    Cypress系列(30)- 操作浏览器的命令
    Cypress系列(29)- 获取页面全局对象的命令
    Cypress系列(28)- scrollTo() 命令详解
    Cypress系列(27)- scrollIntoView() 命令详解
    Cypress系列(26)- 聚焦与失焦命令的详解
    Cypress系列(25)- submit() 命令详解
    Cypress系列(24)- 操作页面元素的命令
    urlencoded、json 格式详解
  • 原文地址:https://www.cnblogs.com/james1207/p/3271378.html
Copyright © 2011-2022 走看看