Observerパターン
概要
その名の通り、あるオブジェクトが他のオブジェクトを監視する、というパターン
Pull は、イベントの発生のみを Observer に伝え、イベントに関する情報は Observer から取得しに (Pull) いく
Push は、イベント発生とそれに関する情報を Observer に伝える (Push)
Pull 型
Subject は、イベントの発生それ自体のみを Observer に伝える
Observer は適宜 Subject に情報を取得しにいく
code:swift
protocol Observable {
func subsribe(_ observer: Observer)
func unsubscribe(_ observer: Observer)
}
protocol Observer {
func didChanged()
}
Push 型
code:swift
protocol Observable {
associatedtype E
func subsribe<O: Observer>(_ observer: O) where O.E == E
func unsubscribe<O: Observer>(_ observer: O) where O.E == E
}
protocol Observer {
associatedtype E
func didChanged(event: E)
}