iOS开发常用设计模式

在开发中很好的利用某种特定的开发模式,则能对编写的程序起到画龙点睛的作用。

  1.协议代理设计模式:

       协议(protocol)类似于Java中的接口,但与接口不同的是,协议没有父类,也不能定义实例变量,在协议中定义相应的方法,在其他的类中进行实现。因此,协议也是iOS开发中比较特殊的一种设计结构。

       协议有两种方法,一种是必须实现的方法,也就是require方法;另一种是可选的方法即optional,引入协议的类,必须实现require方法,可以选择实现optional方法。(与Java的abstract抽象类类似,abstract修饰的方法必须在其继承类中实现)。

#import <...>
@protocol HelloProtocol<NSObject>
@required
- (void)sayHello;
@optional 
- (void)handshake;
@end

  2.通知:

        通知(NSNotification):

           一个通知包括通知发布/通知监听和通知移除三个部分。

           通知发布者:发布通知到通知中心;

           通知中心:接收所有通知发布者发布的通知,并传递给通知观察者;

           通知观察者:接收通知中心发布的通知。

NSNotification *noitifcation = 
[NSNotification notificationWhithName:(NSString *)object:(id) userInfo:(NSDictioncary *)];

使用通知前,需要创建通知对象。通知对象有两个重要的成员变量---name和object,name代编该通知的名称,也是唯一标识这个通知对象,object代表了通知的发送者。NSNotification对象还包含了一个可选参数----字典(NSDictionary),字典中存储了一些值,在传递的过程中供接收者使用。

通知创建完成之后,需要控制通知中心发送通知,系统中所有注册的通知都将放在通知中心中。

  • 获取通知:
+(NSNotificationCenter *)defaultCenter
  • 注册通知监听者:
-(void)addObserver:(id)observer selector:(SEL)aSelector 
name:(NSString *)aName object:(id)anObject
  • 发送通知:
-(void)postNotificationName:(NSString *)aName object:(anObject)
  • 移除通知监听者:
-(void)removeObserver:(id)observer name:(NSString *)aName 
object:(id)anObject

    3.KVO:

       KVC机制是基于KVC,KVC(NSKey ValueCoding)是代表“键-值-编码”的意思,它是一种简洁访问对象属性的机制,而不是通过调用getter和setter方法或者点语法区访问对象属性。

  •     设置属性值
[self setValue:@"Jack" ForKey:@"name"]

      Value是属性需要设置的值,而Key则是该属性的名称。设置完成后,可以通过valueForKey方法访问属性。

  • 访问属性
[self valueForKey:@"name"]
  •     KVO:

       KVO(NSKeyValueObserving)是代表“键-值-监听”,它确立了一个机制,即当观察者对象属性发生变化时,我们就能收到一个“通知”。这和通知有所区别,通过可以有多个观察者监听通知,是一对多的关系;而KVO则是一个监听者,是一对一的关系

      首先注册对象:

-(void) addObserver:(NSObject *)forKeyPath:(NSString *)
 options:(NSKeyValueObservingOptions) context:(void *)

     NSObject指监听者,KeyPath指需要监听的属性,context是指方便传输需要的数据,是一个指针。option是监听的选项,也就说明监听返回信息的字典。它包含两个值---NSKeyValueObservingOptionNew和NSKeyValueObservingOptionOld,分别代表返回信息字典的新值和旧值。

    Value发生变化自动调用:

-(void)observeValueForKeyPath:(NSString *) ofObject:(id) 
change:(NSDictionary *) context:(void *)

    Object指被监听的对象,change字典里存储了一些变化前后的数据。

 

   4.MVC模式:

      MVC模式可以称为MCV模式,M(Model)和V(View)是分隔开来的,通过Controller从而使两个建立关系。

      Controller和View之间的关系如下:

  • 在view视图中的操作可以直接“告诉”控制器以使控制器响应;
  • view需要实现的协议代理也可以由控制器完成;
  • view需要的数据源也需要控制器来提供;
  • view需要实现的动作也可以由控制器提供目标实现。

      在MVC设计模式中还有一个重要的参与者就是Model模型,简单来解释其作用就是:定义一个应用所有需要抽象出来的数据结构以及它们之间关系,还有获取它们的途径等。

      Model和Controller之间的交互是单向的,也就是Model没有指向Controller的关系对应。因为模型不需要知道Controller的存在,目的是为了降低程序的耦合,把此部分的模型移到项目中还可以使用。

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值