上篇博客我們對(duì)Signal的基本實(shí)現(xiàn)以及Signal的面向協(xié)議擴(kuò)展進(jìn)行了介紹, 詳細(xì)內(nèi)容請(qǐng)移步于《Signal中的靜態(tài)屬性靜態(tài)方法以及面向協(xié)議擴(kuò)展》。并且聊了Signal的所有的g功能擴(kuò)展都是放在Signal所實(shí)現(xiàn)的SignalProtocol協(xié)議的擴(kuò)展中的。本篇博客就沿襲上篇博客的內(nèi)容,我們來(lái)聊一下SignalProtocol的部分?jǐn)U展。本篇博客我們主要來(lái)聊一下對(duì)Signal添加Observer的observe()方法擴(kuò)展的具體實(shí)現(xiàn),并且聊一下Signal的MapFilter相關(guān)的功能擴(kuò)展的具體實(shí)現(xiàn)。

當(dāng)然我們?cè)诹南嚓P(guān)源碼的具體實(shí)現(xiàn)時(shí),會(huì)給出相關(guān)的測(cè)試用例,然后再根據(jù)測(cè)試用例來(lái)理解其代碼實(shí)現(xiàn)。

 

一、observe()方法的擴(kuò)展

首先我們來(lái)看一下observe()方法的擴(kuò)展。通過(guò)前幾篇博客的介紹,我們知道SiganlObserver之間的關(guān)聯(lián)是通過(guò)observe()方法來(lái)實(shí)現(xiàn)的。而observe()方法的核心實(shí)現(xiàn)在上篇博客中已經(jīng)進(jìn)行了詳細(xì)介紹。而在協(xié)議擴(kuò)展中又對(duì)observe()方法進(jìn)行了一些擴(kuò)展,這些擴(kuò)展主要是針對(duì)一些特定功能為observe()的使用方式添加快捷調(diào)用方式。

1、observe()方法擴(kuò)展的具體實(shí)現(xiàn)

下方個(gè)SignalProtocol的延展主要是對(duì)observe()方法的擴(kuò)展,在每個(gè)擴(kuò)展方法中最后還是得調(diào)用Signal類中所實(shí)現(xiàn)的observe()方法。還是那句話,下方的這些observe()方法的擴(kuò)展主要還是Signal類中observe()方法的快捷方式。下方將對(duì)observe()的每個(gè)快捷方法進(jìn)行介紹。