这是我参与「第四届青训营 -IOS场」笔记创作活动的第5篇笔记
常用设计模式
代理设计模式
什么是代理设计模式?
代理设计模式是iOS中常用的设计模式之一。代理设计模式可以理解为,A需要完成一个任务,但是A不想自己做,然后A把这个任务委托给B来替他完成。这种完成任务的方式就是代理设计模式。这里A是委托方,B是代理方,B作为代理必须要遵守某个协议,这个协议里规定了需要完成的任务。
代理设计模式在iOS开发中非常常见,UIKit中许多组件都利用了代理设计模式。例如UITableView为开发者提供了两个代理,数据源代理和委托代理,开发者可以为UITableView(委托方)指定这两个代理,他们分别遵守两种不同的协议,可以为委托方办不同的事。这样UITableView就只负责定义一个视图(View),列表数据、列表长度、高度以及事件交互都交给代理们(ViewController)来替它完成,实现了功能的解耦。
当然我们也可以根据自己的业务逻辑来自定义代理设计模式,解耦当前类不关心的业务逻辑。
观察者模式
图片引自:# iOS 客户端专场 学习资料四第四届字节跳动青训营
- Subject(目标):被观察的对象。定义了观察者集合,一个被观察者可以接收任意数量的观察者来观察。
- ConcreteSubject(具体目标):Subject的子类,用于拓展目标类,它包含经常要改变的数据,当发生改变时,向所有观察者发通知。
- Observer(观察者):观察者将对观察目标的变化做出反应,观察者一般定义为接口,该接口声明了更新数据的方法update(),因此又称为抽象观察者。
- ConcreteObserver(具体观察者):在具体观察者中维护一个指向具体目标对象的引用,它存储具体观察者的有关状态,这些状态需要和具体目标的状态保持一致;它实现了在抽象观察者Observer中定义的update()方法。