Swift-观察者模式

观察者模式也可以叫发布订阅模式,观察者有的时候不一定能准备表达观察者模式,主要包括订阅者和发布者,状态事件处理,关系类图如下所示:


观察者模式.png

主题对象(Subject) 表示也可以称之为发布者,可以添加观察者,删除观察者.
观察者对象(Observer) 也称之为订阅者,订阅观察对象,如果观察对象发生变更,观察者对象状态也会随之响应.

iOS中观察者模式最常见的是NSNotification,可以按照类图自定义观察中心,观察者对象.
主题对象定义:
<pre><code>`class ObserverCenter {

var observerMap:[String:Observer] = [:]

func addObserver(observerName:String,observer:Observer) {
    observerMap[observerName] = observer
}

func deleteObserver(observerName:String) {
    observerMap.removeValue(forKey: observerName)
}

func notifyObserver(data:String) {
    
    for (_,value) in observerMap {
        let observer:Observer = value
        observer.updateData(data: data)
    }
    
}

}`</code></pre>

观察者对象:
<pre><code>`class Observer {

func updateData(data:String) {}

}

class CourseObserver: Observer {

override func updateData(data: String) {
      print("课程更新了---\(data)")
}

}

class StudyObserver: Observer {

override func updateData(data: String) {
      print("学习更新了---\(data)")
}

}`</code></pre>

测试代码:
<pre><code>` let observerCenter:ObserverCenter = ObserverCenter()

    let courseObserver:CourseObserver = CourseObserver()
    observerCenter.addObserver(observerName: "Course", observer: courseObserver)
   
    let studentObserver:StudyObserver = StudyObserver()
    observerCenter.addObserver(observerName: "Student", observer: studentObserver)
    
    observerCenter.notifyObserver(data: "FlyElephant")`</code></pre>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容