十一:理解消息轉(zhuǎn)發(fā)機制
消息由接受者麸俘、選擇子及參數(shù)構(gòu)成采章。給某對象"發(fā)送消息(invoke a message)"也就相當于在該對象上"調(diào)用方法"(call a method).
發(fā)給某對象的全部消息都要由"動態(tài)消息派發(fā)系統(tǒng)(dynamic message dispatch system)"來處理,該系統(tǒng)會查出對應(yīng)的辦法仲翎,并執(zhí)行其代碼痹扇。
十二 :對象 消息 運行期
若對象無法響應(yīng)某個選擇子,則進入消息轉(zhuǎn)發(fā)流程
通過運行期的動態(tài)方法解析功能溯香,我們可以在需要用到某個方法時再將其加入類中帘营。
對象可以把其無法解讀的某些選擇子轉(zhuǎn)交給其他對象來處理。
經(jīng)過上述兩步之后逐哈,如果還是沒辦法處理選擇子芬迄,那就啟動完整的消息轉(zhuǎn)發(fā)機制。
十三:用"方法調(diào)配技術(shù)" 調(diào)試"黑盒方法"
在運行期昂秃,可以向類中新增或替換選擇子所對應(yīng)的方法實現(xiàn)
使用另一份實現(xiàn)來替換原有的方法實現(xiàn)禀梳,這道工序叫做"方法調(diào)配"開發(fā)者常用此技術(shù)向原有實現(xiàn)中添加新功能
一般來說,只有調(diào)試程序的時候才需要在運行期修改方法實現(xiàn)肠骆,這種做法不宜濫用算途。
十四:理解"類對象"的用意
每個實例都有一個指向Class對象的指針,用以表明其類型蚀腿,而這些Class對象則構(gòu)成了類的繼承體系嘴瓤。
如果對象類型無法在編譯期確定,那么就應(yīng)該使用類型信息查詢方法來探知
盡量使用類型信息查詢方法來確定對象類型莉钙,而不要直接比較類對象廓脆,因為某些對象可能實現(xiàn)了消息轉(zhuǎn)發(fā)功能
十五:用前綴避免命名空間沖突
選擇與你的公司、應(yīng)用程序或二者皆有關(guān)聯(lián)之名稱作為類名的前綴磁玉,并在所有代碼中均使用這一前綴停忿。
若自己所開發(fā)的程序庫中用到了第三方庫,則應(yīng)為其中的名稱加上前綴蚊伞。