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