1. MVVM初实践

    Author: Charles Zhu
    Summary: a sample project practising MVVM

    之前已经初步了解了一些MVVM的概念,需要在实践中体会这种设计模式,并理解“响应式”带来的优越性。
    考虑到最近一直在做网盘类产品,于是决定:获取网盘的内容,并可以浏览内容。如果是文件夹的话,则可以点击查看内容。这样,就相当于实现了一个小型的文件查看器。
    另外需要说明的,这里的网盘其实是一个带有系统的SD卡,自身带有AP,可以无线连接访问。同时,提供了API接口获取相关的数据。

    MVVM 的角色分配

    视图无疑是用UITableView, 控制器自然选择UITableViewController,自然这里需要建立一个ViewModel来监视一切变化并把这种变化传递给控制器。

    已知的VM任务

    1. 获取文件夹列表 VM需要知道当前所在的路径。另外获取到的数据需要重组:比如去掉隐藏文件,进行排序等。这个操作可以封装在某个数据访问层。
    2. cell的点击操作 对于文件,需要把文件内容显示出来(为了方便,这里只对图片文件显示)。

    控制器的任务 ...

    Tagged as : MVVM
  2. MVVM模式初探

    Author: Charles Zhu
    Summary: 设计模式

    MVC的无奈

    MVC结构是学习iOS开发的人最先学习的一种开发模式,apple提倡以MVC为中心的开发模式。因为它很好的解构了应用场景中相关而又各自独立的部分:视图,视图控制器和数据模型。在MVC的世界里,控制器负责将模型中的数据以内容的形式展现到视图中,同时也把视图上产生的数据变化传递给模型从而将这种变化持久化。于是,在稍微复杂的app中,控制器中的内容会很庞大:网络操作,数据存储,手势响应等等。几乎可以确定,如果app需要添加新功能,超过一半的新增代码是添加在控制器中,这样不可避免的造成控制器的冗余以及大段无法重用的重复代码。
    在开始MVVM时,我们可以稍稍考虑下现有MVC的问题。

    视图

    毋庸置疑,视图的作用很重要,但在设计中,视图是否需要和控制器,数据模型同等的地位呢?要知道绝大多数情况下,视图是不会重用的,往往“耦合”在视图控制器中,所以往往代码中有几个view controller,就能知道程序会有几个页面。此外,视图中的UI元素也是直接作为变量存在在控制器代码中,因为只有这样才方便刷新。很显然,视图控制器就可以代表视图本身。

    控制器

    控制器需要把模型代表的数据以合适的形式显示在视图上,这样免不了需要处理(当然也有不需要处理的简单情况 ...

    Tagged as : iOS mvvm mvc pattern

Page 1 / 1