5-读书笔记----iOS开发指南:从零基础到App Store上架--iOS常用设计模式

iOS常用设计模式

软件设计模式大都来源于GoF123种设计模式。

选择了如下4 种设计模式:单例模式、委托模式、观察者模式和MVC模式

单例模式 

单例模式的作用是解决“应用中只有一个实例”的一类问题。它只能是一个实例,其作用是实现应用程序中一些共享资源的访问和状态的保持等。


委托模式

委托模式从GoF装饰(Decorator)模式、适配器(Adapter)模式和模板方法(Template Method)模式等演变 而来。


UIApplication:框架类具有通用、可重复使用、与具体应用无关等特点

AppDelegate:应用相关类的角色,应用相关类与具体应用有关。由于受到框架类的控制,应用相关类常常被设计为“协议”,在Java中称为“接口”。 开发人员需要在具体的应用中实现这个“协议”。

AppDelegate类实现协议UIApplicationDelegate,它是委托类


委托是为了降低一个对象的复杂度和耦合度,使其能够更具通用性而将其中一些处理置于委托对象中的编码

方式。通用类因为通用性(与具体应用的无关性)而变为框架类,框架类保持委托对象的指针,并在特定时刻向

委托对象发送消息。消息可能只是通知委托对象做一些事情,也可能是对委托对象进行控制。


委托消息命名有一定的约定性,如果是UITextField发出的消息,就以textField开头,后面跟3个词之 一——ShouldWillDid。在使用Should消息时,应该返回一个布尔值,这个返回值用于确定委托是 否会响应消息;当使用Will后缀时,没有返回值,表示改变前要做的事情;当使用Did后缀时,也没有返 回值,表示改变之后要做的事情。这3种方法都会把发送消息的对象以参数的形式回传回来


数据源委托一样,都是委托设计模式的具体应用,委托对象主要对控件对象的事件和状态变化作出响应,而数据源对象是 为控件对象提供数据。需要注意的是,委托中的方法在实现时是可选的,而数据源中的方法一般必须实现。


观察者模式

观察者(Observer)模式也叫发布/订阅(Publish/Subscribe)模式,是MVC( 模型视图控制器)模式的重要组成部分。

观察者模式的类图,它有4个角色,具体如下所示。

抽象主题(Subject)。在Objective-C中,抽象主题是一个协议,它是一个观察者集合容器,定义了添加观察者(attach)方法、移除观察者(detach)方法和为所有观察者发送通知的方法(notifyObserver)。

抽象观察者(Observer)。在Objective-C中,抽象观察者是一个协议,它有一个更新(update)方法。

具体观察者(ConcreteObserver)Observer协议的具体实现。

具体主题(ConcreteSubject)Subject协议的具体实现。


通知机制和KVO机制

观察者模式的具体应用有两个——通知(notification)机制KVO(Key-Value Observing) 机制,下面简要介绍这两种机制。

1. 通知机制 通知机制与委托机制不同的是,前者是“一对多”的对象之间的通信,后者是“一对一”的对象之间的通信。

在通知机制中对某个通知感兴趣的所有对象都可以成为接收者。首先,这些对象需要向通知 中心(NSNotificationCenter)发出addObserver:selector:name:object:消息进行注册,在投送对象投 送通知给通知中心时,通知中心就会把通知广播给注册过的接收者。所有的接收者都不知道通知是谁投送的,更 不关心它的细节。投送对象与接收者是一对多的关系。接收者如果对通知不再关注,会给通知中心发出removeObserver:name:object:消息解除注册,以后不再接收通知。



2. KVO机制

KVO不像通知机制那样通过一个通知中心通知所有观察者对象,而是在对象属性变化时通知会被直接发送给 观察者对象。


属性发生变化的对象需要发出消息addObserver:forKeyPath:options:context:给注册观察 者,使观察者关注它的某个属性的变化。当对象属性变化时,观察者就会接收到通知,观察者需要重写方法observeValueForKeyPath:ofObject:change:context:以响应属性的变化。


MVC 模式

MVC(Model-View-Controller,模型视图控制器)模式

MVC模式概述

MVC模式是一种复合设计模式,由“观察者”(Observer)模式、“策略”(Strategy)模式和“合成”(Composite) 模式等组成。



Cocoa Touch中的MVC模式





模型。保存应用数据的状态,回应视图对状态的查询,处理应用业务逻辑,完成应用的功能,将状态的变 化通知视图。

视图。为用户展示信息并提供接口。用户通过视图向控制器发出动作请求,然后再向模型发出查询状态的 申请,而模型状态的变化会通知给视图。

控制器。接收用户请求,根据请求更新模型。另外,控制器还会更新所选择的视图作为对用户请求的回应。 控制器是视图和模型的媒介,可以降低视图与模型的耦合度,使视图和模型的权责更加清晰,从而提高开 发效率。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值