1.协议代理
首先,ios协议代理是一种设计模式! 因为ios使用的是oc语言,面向对象但不支持多继承,使用协议代理巧妙的解决多继承的问题!
ios协议代理实现没有直接关系的类之间的通信手段,其次协议代理还可以为类添加方法!
代理的主要价值是让你可以很容易的定制各种对象的行为!
协议本身不是类,它是以关键字protocol定义;
2.mvc
Modol View Controller(MVC)是一种最早的也是最成功的可重用的设计模式;
Modol View和Controller的角色
要想理解MVC设计模式中每个子系统的角色,我们就需要理解一个应用程序的功能和行为。我们知道一个应用程序通常需要存储数据信息,检索数据信息以及把这些数据信息呈现给用户,同时还要允许用户对数据进行编辑(增删查改等操作)。那么MVC的角色就分别为:
Model: 为应用程序提供独立的,不依赖于View和Controller子系统的数据模型。
View: 以一定的形式像用户呈现数据并允许用户对数据进行操作。理解View的关键是要理解同样的数据可以有不同的呈现方式,可以以列表的形式显示,可以以图片的形式显示,有时根据需求只需显示部分数据。
Controller: 在Model和View之间加入一个Controller的主要目的就是“去耦”,即消除Model和View之间的耦合性。用户和View交互时,View会通知Controller在View中有数据发生了更改,而Controller则会将这个数据的改变反应到Model中。Controller在这个过程中扮演转义数据的角色(因为呈现在View中的数据可能是便于用户阅读的文字或是数字,而存储在Model中的数据可能是比较高效但不便于直接阅读的二进制或是其他存储方式比如关系数据库,Controller可以承担转化这两种数据形式的职责)。
MVC设计模式减少了程序中模块间的耦合性,但是有时候也增加了程序的复杂度。从长远来讲,MVC这样一个清晰的子系统分离设计可以减少系统的维护开销并且可以很方便的实现系统功能的增强和扩展。另外一个考虑就是,子系统的分离对软件测试工作也带来了很大的方便,比如我们可以直接测试升级了的系统Model,而不一定非得通过用户界面来测试,因为当通过用户界面测试失败时,我们不知道到底是界面导致的还是Model本身导致的或是两者同时引起的。再有就是,通常一个系统的View和Model是由不同的团队开发的,这样每个子系统的清晰分离就显得尤为重要了。