移动开发中MVC模式和分层

MVC在界面开发中被奉为设计的典范,在移动开发中也是

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。

它将业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

我刚接触ios,想通过ios的一些实例设计来理解MVC在ios中的应用。

1. IOS的view

对于工具化的图形界面设计,这个就应该是各种视图控件的设计,页面和控件的大小、位置、边框、颜色(前景、背景)、字体、title等属性的设置。

对于定制化的图形界面,仍然需要代码来设计页面和控件的大小、位置、边框、颜色(前景、背景)、字体、titile等属性。

UIView是ios视图设计中,最基本的一个类。里面很多属性需要定义。

与view紧密关联的数据就是viewcontroller了,view的刷新和输入提交都是通过controller来完成。

controller对view拥有控制权,简单来说,一个controller拥有访问其view实体的权利。

controller会拥有哪些权利? 这就是controller与view不同的地方,代码相分离的地方。

2. iOS的controller

controller面对view的功能有:

能显示的修改view中的关联变量,驱动view的刷新。

能保存view中的关联变量,驱动model数据在服务端或cache的更新。

为实现一个完整的feature:

controller一般还拥有一些功能,如:

1. 逻辑处理、数据处理、错误处理等等

2. 与其他controller的交互

3. 访问server

4. 访问数据库

由以上功能来看,controller还能再分几层, 如逻辑层,cache层,server api call层(如rest)。

3. ios的Model

controller中使用的数据结构的定义。

Model的定义一般仅仅是POJO模式,定义一个对象的成员变量的 getter, setter函数。或者再增加一些通用的数据处理,如toJson, fromJson等

没有业务逻辑,是一个简单的实体类。

这个model一般与server protocol协议和数据库表 密切相关。

MVC的结构图

一些实践经验:

1. data model与server的protocol最好能分离。

一般情况下,data model可以与protocol共用一套数据结构。但这样的耦合会很不方便,protocol的变化会频繁影响到data model, 特别是类似json,和hibernate之类的变量名与资源和较强的关联关系时。

data model可以大而全,与protocol保持一定关联,但又能灵活分离。

所以,可以有一个data model模块,和一个 protocol模块。

当协议频繁改动时,旧协议可以不改变, data model也能做到适应新协议,并兼容老协议。

2. 移动端的data model的演化,字段的删除、增加都可以,但最好去除容易混淆的字段、重复意义的字段。

同一data model中,当不同业务各自的字段时,尽量去统一起来,可以由server端来维护和兼容新老协议。

3. 每个rest api call的protocol保持最小化,便于传输,功能分离等,并且保持一定的可扩展性。

对于最小化,将空对象null,空数组[],在传输过程中过滤,并且对于protocol尽量不复用现有的嵌套对象,这样会令人confusing,会有很多深层嵌套和空白字段。

对于可扩展性,如 增加{}嵌套,便于扩展新的对象。

时间: 2024-11-03 21:18:26

移动开发中MVC模式和分层的相关文章

ios开发中MVC模式的理解

MVC是80年代出现的一种软件设计模式,是模型(model),视图(view)和控制(Controller)的缩写. 其中Model的主要功能包括业务逻辑的处理以及数据的访问,这是应用程序的主体部分. View的主要功能是用来跟用户进行交互,实现数据的收集和展示,视图是用户看到和直接操作的的界面,它只接受用户的操作. Controller的主要功能用来在视图和模型之间建立联系并控制数据的走向,控制器本身不输出任何内容和对数据做任何处理. 用个简单的例子来说明三者的关系 一个简单的计算器,它除了我

Unity3d中UI开发的MVC模式

原文:http://engineering.socialpoint.es/MVC-pattern-unity3d-ui.html 动机 和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK.另外至关重要的是, 我们想尽快加速迭代的过程.使用MVC模式来进行设计,已经被业界证明了是可以解耦屏幕上的显示,如何控制用户的输入对显示的改变,以及如何根据应用的状态进行改变.MVC模式提供了以下好处: (1) 可以修改UI的外观,而不用修改一行代码 (2) 在不同的组件里面可以共享同

JDBC - 开发实例 - MVC模式

JDBC - 开发实例 - MVC模式  1. 在web.xml中配置连接数据库的信息 web.xml: <context-param> <param-name>server</param-name> //主机名 <param-value>localhost</param-value> </context-param> <context-param> <param-name>db</param-name&

(架构)UI开发的MVC模式

原文:http://engineering.socialpoint.es/MVC-pattern-unity3d-ui.html 动机 和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK.另外至关重要的是, 我们想尽快加速迭代的过程.使用MVC模式来进行设计,已经被业界证明了是可以解耦屏幕上的显示,如何控制用户的输入对显示的改变,以及如何根据应用的状态进行改变.MVC模式提供了以下好处: 可以修改UI的外观,而不用修改一行代码: 在不同的组件里面可以共享同一套逻辑代码,

Java中MVC模式

MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.饼图来表示.C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新. 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用.最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 Cold

iOS开发中MVC、MVVM模式详解

iOS中的MVC(Model-View-Controller)将软件系统分为Model.View.Controller三部分 Model: 你的应用本质上是什么(但不是它的展示方式) Controller:你的Model怎样展示给用户(UI逻辑) View:用户看到的,被Controller操纵着的 Controller可以直接访问Model,也可以直接控制View. 但Model和View不能互相通信. View可以通过action-target的方式访问Controller,比如我们在Sto

Java Web开发中MVC设计模式简介

一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条理性,对于一个小型的网站这样的编写没有任何问题,但是一但我们需要编写大型的web工程的话,我们现有的编写模式会造成web应用的可扩展性较差,而且一但出现问题不能准确的定位出问题出在哪里. Java是一门应用设计模式比较广泛的语言.目前主流提出的23种设计模式均可在Java语言编写的程序中所应用.目前

cocos2dx之lua项目开发中MVC框架的简单应用

**************************************************************************** 时间:2015-03-31 作者:Sharing_Li 转载注明出处:http://blog.csdn.net/sharing_li/article/details/44658317 **************************************************************************** 最近的游

简单理解前端web开发的MVC模式

随着前端Ajax兴起.前端开发工作进一步划分:js开发和ui页面制作.另外从整个前端项目的清晰明朗以可扩展性角度来看,MVC的应用也越来越必要,特别是对大的项目. 例如 需要给一个页面上的button注册一个onclick事件. 1.我们可以有如下最简洁的写法:(view和model control完全混合) <HTML> <HEAD> <TITLE> example </TITLE> </HEAD> <BODY> <input