首页 > 学院 > 开发设计 > 正文

MVC设计模式

2019-11-09 18:55:42
字体:
来源:转载
供稿:网友

概述

MVC全名是Model View Controller,是模型-视图-控制器的缩写。一种软件设计典范,用一种业务逻辑、数据、界面分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

特点

一、 优点: 1、 耦合性低:视图层和业务层分离,所以在更改视图层代码时而不用重新编译模型和控制器代码。同样,更改业务流程或者业务规则改变时只需改动模型层即可。由于三个部件是相互独立,改变其中一个不会影响其他两个。 2、 重用性高 :比如很多界面可以重用一个模型。 3、 生命周期成本低。 4、 部署快。 5、 可维护性高。 6、 有利软件工程化管理。 二、 缺点: 1、 没有明确的定义: 2、 不适合小型、中等规模的应用程序。 3、 增加系统结构和实现的复杂性。 4、 视图与控制器间的过于紧密的链接。 5、 视图对模型数据的低效率访问。 6、 一般高级的界面工具或构造器不支持模式。

使用

在使用MVC设计模式时,我们得先理解和体会MVC的理念和规则:

1、 Model和View永远不能互相通信,只能通过Controller传递。 2、 Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制与Controller间接通信。 3、 Controller可以直接与View对话。通过Outlet,直接操作View,Outlet直接对应到View中的控件,View通过action向Controller报告事件的发生(如用户Touch我了)。Controller是View的直接数据源(数据很可能是Controller从Model中取得并经过加工了)。Controller是View的代理(delegate),以同步View与Controller。 这里写图片描述

代理的扩展:

在使用MVC设计模式时,有时候我们的View类型和一些基本的方法都一致,我们会采用集成的方法将一些共同的特性抽取出来,作为基类,其他的View只需集成即可。而很多时候,我们的代理也有许多同样的方法,这时候,我们同样使用继承的方式来实现,代理的继承和扩展和原始的代理区别如下:

1、 在定义代理时,继承基类的代理。如下图 代理SPCTableViewDataSource继承基类ZDBSimulateTableViewDatasource。 这里写图片描述

2、 定义代理实现对象。如idspcDataSoruce;

这里写图片描述 3、 在.m文件中重写set方法,给对象赋值并传值。_spcDataSoruce为当前代理的对象。而self.dataSource为父类的对象。

这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表