ios设计模式

设计模式:
特定场景下也对特定问题的解决方案,这些解决方案是经过反复论证和测试总结出来的。
一下主要介绍4中设计模式:
1、单例模式:
解决:应用中只有一个实例
实现原理:
单例模式一般会封装一个静态属性,并提供静态实例的创建方法。
Cocoa Touch框架中,有UIApplication、UIAcceleromter、NSUserDefaults和NSNotificationCenter等单例

Cocoa框架中又,NSFileManager、NSBundle、NSWorkspace、SApplication实例等

1、UIApplication类的实例提供了应用程序的集中控制点来保持应用的状态。UIApplication实例总是分配给应用程序委托对象(UIApplicationDelegate),AppDelegate就是这个应用程序的委托对象,体现了协议

2、NSUserDefaults
单例类NSUserDefaults可以方便的读取应用设置项目
+standardUserDefaults方法是创建和获得NSUserDefaults实例的静态方法
3、NSNotificationCenter
单例类NSNotificationCenter提供信息广播通知,它采用观察者模式的通知机制
+defaultCenter方法是创建和获得NSNotificationCenter实例的共享方法
4、NSFileManager
NSFileManager提供了访问文件系统的通用操作,可以定位、创建、复制和文件夹。
5、NSBundle
NSBundle提供了动态加载或卸载可执行代码、定位资源文件以及资源本地化,访问文件系统等系统。
+mainBundle方法是创建和获得NSBundle实例的共享方法

委托模式:
委托是为了降低一个对象的复杂度和耦合度,使其能够更具通用性而将其中一些处理至于委托对象中得编码方法。通用类因为通用性而变为框架类,框架类保持委托对象指针,并在特定时刻向委托对象发送消息。消息可能只是脱脂委托对象做一些事情,也可能是对委托对象的控制。

观察者模式:
叫发布、订阅模式,是MVC(模型-视图-控制器)模式的重要组成部分
在软件系统中,一个对象状态改变也会连带影响其他很多对象的转改发生变化,能够实现这一需求的设计方案很多,但能够做到复用性强切对象之间匿名通信的,观察者模式是其中最为适合的一个。

观察者模式应用有两个—通知(notification)机制和KVO(key-Value Observing)机制
1、通知机制;
通知是一对多得,而委托是一对一对象之间的通信
在通知机制中对某个通知感兴趣的所有对象都可以成为接受者。首先,这些对象需要向通知中心(NSNotificationCenter)发出addObserver:selector: name:object:消息进行注册,在投送对象投送通知给通知中心,通知中心就会把通知广播给注册过的接收者。所有的接收者都不知道通知是谁投送的,更不关心它的细节。投送对象和接收者是一对多的关系。接收者如果对通知不在关注,会给通知中心发出removeObserver:name:object:消息来解除注册,以后不在收到通知
2、KVO机制:
KVO机制不像通知那样通过一个通知中心通知所有观察者对象,而是在对象属性变化时通知会被直接发送给对象观察者

MVC模式:
模型-视图-控制器
是一种符合设计模式,有观察者模式、策略模式和合成模式等组成的,
模型:保存应用数据的状态,回应视图对状态的查询,处理应用业务逻辑,完成应用的功能,将状态的变化通知视图。
视图:为用户展开信息并提供借口,用户通过视图向控制器发出动作请求,然后在想模块发出动作查询的申请,模型状态的变化会通知给视图
控制器:
接收用户请求,根据请求更新模型,另外,控制器还会更新所选择的视图作为对用户请求的回应。控制器是视图和模型的中间媒介,可以降低视图与模型的耦合度,使视图和模型的权责更加清晰,从而提高开发效率

MVC in CocoaTouch

      用户请求                  更行

视图==========控制器============模型
更新 通知
UIViewController是所有控制器的根类,如UITableViewController,UITabBarController和UINavigationController。
UIView是视图和控件的根类
模型一般都继承与NSObject的子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值