oc中的设计模式

oc中的设计模式有

  • 首先单例模式:在程序运行过程中初始化,并且单例的初始化只执行一次,其生命周期为单例对象初始化开始到程序结束。其初始化放法有2种如下图
    oc中的设计模式_第1张图片
    系统中常见的单例有
//沙盒初始化
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//通知初始化
[NSNotificationCenter defaultCenter];
  • KVC(键值编码 key value coding)其主要作用是将字符串与model对应起来,可以将json字符串转换成model其使用的方法如下图:
    oc中的设计模式_第2张图片
    如果有一个对象book是另外一个对象person的属性的时候,为book中的一个属性name赋值。
    oc中的设计模式_第3张图片

  • KVO(观察者模式)这个模式是对某一变量进行监听,当事件发生的时候调用对用的时间处理方法,对事件进行处理,在处理结束后需要在dealloc 方法中进行移除。kvo模式下一般分为3步:

    1. 注册监听器
    2. 实现监听事件
    3. 移除监听
      对应代码如下:注册监听
      这里写图片描述
      事件处理
      oc中的设计模式_第4张图片
      移除监听
      这里写图片描述
  • 发送通知(NSNotificationCenter)发送通知与KVO模式唯一的不同就是在于(NSNotificationCenter)需要发送通知。其实现流程为:
    注册监听
    oc中的设计模式_第5张图片
    发送消息
    这里写图片描述
    处理消息事件
    这里写图片描述
    移除监听
    oc中的设计模式_第6张图片

  • 委托(代理)模式:该模式与发送消息类似,只是代理一般用于上下2层之间的通信,而通知则不限于附近的2层,其可以跨越多层完成消息的传播完成通信,关键字为:@protocol ,@required 必须实现@optional选择实现
    下面是代理的流程:
    oc中的设计模式_第7张图片

    v1与v2 签订协议
    v1
    这里写图片描述
    v2
    oc中的设计模式_第8张图片
    这里的delegate使用leassign修饰,避免循环引用
    v1委托V2做代码 ,v2 开始做
    这里写图片描述
    v2调用方法处理
    oc中的设计模式_第9张图片
    v2处理结束 告知v1 已经处理结束
    oc中的设计模式_第10张图片
    v1得知v2的完成消息后做出相应的处理
    oc中的设计模式_第11张图片

  • 还有就是有一个[NSUserDefaults standardUserDefaults] (沙盒)可以储存数据量不是很大的数据,比如可以存放登陆用户的名字密码等等。

最后如果此处有什么模式漏掉了,请各位大牛指出,共同学习,共同进步,谢谢大牛些了。

你可能感兴趣的:(Objective-C)