设计模式:IOS应用程序开发

在移动应用程序开发中,有很多工作是从应用程序的一部分委派给另一部分的。 假设,当在UI上点击一个按钮时,将触发另一个视图。 所有这些都是通过委派进行的。 IOS为我们提供了各种设计模式来处理事件的激活。 提供的设计模式类型包括“关键价值观察”,“通知中心”,“委派”。

关键价值观察(KVO)

让我们以银行应用程序为例,如果余额为正,则当前余额为绿色,如果余额为负,则余额为红色。 为此,在存款和取款期间余额值发生更改时,需要通知视图控制器。 使用KVO,我们可以注册以通知其他对象的特定属性更改。

注意事项:

如果要向对象A通知对象B某些属性的更改。

1. B中的特定属性应使用setter来更改其值。

2.对象A必须注册为特定密钥路径(属性)的对象B的观察者。

3. A类必须实现方法ObserveValueforKeypath。 此方法必须指定如何处理更改的值。

对于银行应用程序,Account类应具有属性的设置方法:当前余额。 视图控制器必须注册为属性:当前余额的帐户对象的观察者。 最后,视图控制器类必须实现如下的ObserveValueforKeypath方法。

通知中心:

通知中心是IOS提供的功能,可以使用该中心将信息广播到注册的对象。 NSNotificationCentre是一个单例类,通过该类,不同的对象可以将自己添加为观察者,并收到所需的通知。

在以上示例中,对象将自身作为观察者添加到NSNotificationCenter中,用于通知类型:UIDeviceBatteryLevelDidChangeNotification。 收到UIDeviceBatteryLevelDidChangeNotification时,会触发BatteryLevelChanged函数。

代表团:

代表们帮助我们从一个对象向另一个对象发送消息。 让我们来看一个具有两个视图的简单应用程序。 轻按view1时,view2的背景颜色会更改。 为了做到这一点,它们之间应该进行某种交流,而这正是代表团参与其中的地方。

轻按view1时,会将changeBackgroundColor的工作委托给其注册的观察者,在上面的代码中为对象view2。 当View2类采用ClassView1Delegate协议时,它应实现changeBackgroundColor函数以符合该协议。

以上三种设计模式都或多或少地完成了类似的工作。 但是根据应用程序的需要,应该选择合适的模式。