上篇博客我們對Signal的基本實(shí)現(xiàn)以及Signal的面向協(xié)議擴(kuò)展進(jìn)行了介紹, 詳細(xì)內(nèi)容請移步于《Signal中的靜態(tài)屬性靜態(tài)方法以及面向協(xié)議擴(kuò)展》。并且聊了Signal的所有的g功能擴(kuò)展都是放在Signal所實(shí)現(xiàn)的SignalProtocol協(xié)議的擴(kuò)展中的。本篇博客就沿襲上篇博客的內(nèi)容,我們來聊一下SignalProtocol的部分?jǐn)U展。本篇博客我們主要來聊一下對Signal添加Observer的observe()方法擴(kuò)展的具體實(shí)現(xiàn),并且聊一下Signal的Map和Filter相關(guān)的功能擴(kuò)展的具體實(shí)現(xiàn)。
當(dāng)然我們在聊相關(guān)源碼的具體實(shí)現(xiàn)時,會給出相關(guān)的測試用例,然后再根據(jù)測試用例來理解其代碼實(shí)現(xiàn)。
一、observe()方法的擴(kuò)展
首先我們來看一下observe()方法的擴(kuò)展。通過前幾篇博客的介紹,我們知道Siganl與Observer之間的關(guān)聯(lián)是通過observe()方法來實(shí)現(xiàn)的。而observe()方法的核心實(shí)現(xiàn)在上篇博客中已經(jīng)進(jìn)行了詳細(xì)介紹。而在協(xié)議擴(kuò)展中又對observe()方法進(jìn)行了一些擴(kuò)展,這些擴(kuò)展主要是針對一些特定功能為observe()的使用方式添加快捷調(diào)用方式。
1、observe()方法擴(kuò)展的具體實(shí)現(xiàn)
下方個SignalProtocol的延展主要是對observe()方法的擴(kuò)展,在每個擴(kuò)展方法中最后還是得調(diào)用Signal類中所實(shí)現(xiàn)的observe()方法。還是那句話,下方的這些observe()方法的擴(kuò)展主要還是Signal類中observe()方法的快捷方式。下方將對observe()的每個快捷方法進(jìn)行介紹。