設(shè)計(jì)思路:總分結(jié)構(gòu)曲楚,向下派發(fā)指令厘唾,減少下層邏輯耦合,下層邏輯都與上層邏輯聯(lián)系龙誊,多管線設(shè)計(jì)抚垃,每只管線單一指責(zé)
解決問題:通知管線,解決通知多處注冊(cè)的問題趟大『资鳎可以做到一處監(jiān)聽,向下派發(fā)指令逊朽,避免了多處注冊(cè)罕伯,代碼亂,不易維護(hù)的問題叽讳。分頁管線捣炬,管理分頁,減少下層跳轉(zhuǎn)耦合绽榛。
class Pipe {
static let shared = Pipe()
let tab = TabPipe()
let basicData = BasicDataPipe()
}
class TabPipe {
func jumpTo(index: Int) {
(keyWindow()?.rootViewController as? MainTabViewController)?.selectedIndex = index
}
}
protocol BasicDataPipeDelegate {
func refreshDataAfterBasicDataFetched()
}
class BasicDataPipe {
private var deliveries: [BasicDataPipeDelegate] = []
init() {
NotificationCenter.default.addObserver(forName: .basicDataDidSetup, object: nil, queue: .current) { [weak self] (notification) in
guard let `self` = self else { return }
self.flash()
}
}
func register(_ delivery: BasicDataPipeDelegate) {
deliveries.append(delivery)
}
private func flash() {
for d in deliveries {
d.refreshDataAfterBasicDataFetched()
}
}
}