iOS设计模式

作者: BakerCheng | 来源:发表于2016-03-09 19:26 被阅读275次

最近在看KVC KVO。所以就自然把设计模式复习了一次。

设计模式有很多,根据业务的需求而定,一般比较常见的有以下几种,也是我接触最多的,今天来把他复习一次。

1.单列模式:保证一个类只有一个实例,并提供一个访问它的全局访问点,一个app只有一个实列,也就是说他一直存在,除非你手动置空,然后在内存里面只会用到一个地址。一个app开启,就有了很多单列,例如:

UIApplication类提供了 +sharedAPplication方法创建和获取UIApplication单例

● NSBundle类提供了 +mainBunle方法获取NSBundle单例

● NSFileManager类提供了 +defaultManager方法创建和获得NSFileManager单例。(PS:有些时候我们得放弃使用单例模式,使用-init方法去实现一个新的实例,比如使用委托时)

● NSNotificationCenter提供了 +defaultCenter方法创建和获取NSNotificationCenter单例(PS:该类还遵循了另一个重要的设计模式:观察者模式)

● NSUserDefaults类提供了 +defaultUserDefaults方法去创建和获取NSUserDefaults单例

这些都是单列,当然你也可以自己创建单列。

注意几点。单列主要用在唯一的作用类,比如获取地址,app应用信息,数据库的操作等等。其他的类最好别用单列。因为单列一直存在的原因,多了你会忘记他的存在,浪费内存了。

取巧的用法:我们可以利用系统的单列,做系统的分类,存储我们自己想要的信息!

2.观察者模式:一个对象状态改变,通知正在对他进行观察的对象,这些对象根据各自要求做出相应的改变

这个KVO就是。也有很多大神把KVO自己重写了一次。通知(notification)机制也是。

通知的好处在于我只管自己变动的时候发通知就行,有人会接受这个通知然后做相应的管理。

3,委托模式 就是我们常说的代理模式吧。系统有很多都是这个模式,这个UITableViewDelegate 和 UITableViewDataSource 就是专为UITableView而写的委托和协议。委托模式比较严禁,还关心返回值。所以多用委托模式,对项目来说利用委托和协议,你可以把主要精力放到逻辑业务上,将数据绑定和事件处理交给委托和协议去完成。

4.MVC模式 模型-视图-控制器(MVC)是Cocoa的构建块之一,毫无疑问它是使用最频繁的设计模式。它根据通用的角色去划分类,这样就使得类的

职责可以根据角色清晰的划分开来。

涉及到的三个角色如下:

Model:

模型保存应用程序的数据,定义了怎么去操作它。例如在本应用中模型就是Album类。

View:

视图是模型的可视化表示以及用户交互的控件;基本上来说,所有的UIView对象以及它的子类都属于视图。在本应用中AlbumView代表了视图。

Controller:

控制器是一个协调所有工作的中介者(Mediator)。它访问模型中的数据并在视图中展示它们,同时它们还监听事件和根据需要操作数据。你可以猜猜哪个类是控制器吗?它正是:ViewController。

拓展后的模式就是MVVM模式。在MVVM中,我们将视图处理逻辑从C中剥离出来给V,剩下的业务逻辑部分被称做View-Model。

使用MVVM模式的iOS应用的可测试性要好于MVC,因为ViewModel中并不包含对View的更新,相比于MVC,减轻了Controller的负担,使功能划分更加合理。

MVVM模式的正确实践是,我们应该为app delegate的根视图创建一个ViewModel,当我们要生成或展示另一个次级ViewController时,采用当前的ViewModel为其创建一个子ViewModel。

肚子竟然不争气的饿了。我擦。先回家吃饭!

说说最近金三银四的离职吧。公司走了好几个大神iOS,发现高级iOS还是很缺,市场上一大票初级iOS很难找到工作了。建议大家往别的语言找找看,不会就学嘛。PHP,H5,还是不错的就业方向。

很多人走了不免有点悲哀,怎么说呢?我旁边的同事人还没有离职,电脑就被我预定了,iPa pro。嘿嘿嘿。然后他的养的植物也被人抢走了,魔方也拿走了。

不管怎么样,加油。Life go on

相关文章

网友评论

    本文标题:iOS设计模式

    本文链接:https://www.haomeiwen.com/subject/jcqtlttx.html