OOP 中的 方法呼叫、介面、鴨式辯型、訪問者模式
阿新 • • 發佈:2019-02-27
方法呼叫的四種方式
- 直接呼叫:通過類或者例項直接呼叫其方法。
- 介面呼叫或者轉型呼叫:通過將例項回撥給一個介面物件,或者轉型為一個父類的例項,來呼叫
- 間接呼叫:將物件當引數傳給一個方法,在這個方法中呼叫物件的方法
- 間接介面呼叫:就是第二和第三種的結合,方法以一個介面或者一個父類為形參,傳入物件的時候自動的回撥或轉型
介面的兩種型別
- 強制性介面,這類介面是在類宣告的時候需要顯式宣告的。即介面方法的實現必須放在類體裡面。
- 非強制型介面,即鴨子辯型。對於支援動態繫結(在類體外部為類或例項新增方法)的語言,顯然在類定義時宣告介面是不夠用的。所以基本都通過反射功能來支援非強制型介面。而強制介面是定義了一個回撥函式,來實現物件轉變為介面物件的。
在不破壞既有封裝性的基礎上,為系統新增功能
即不修改原先的類定義。
- 對於支援動態繫結的語言,可以直接動態新增一個方法。在某種程度上還是破壞了原有的封裝性。
- 採用間接呼叫的方法,定義一個新的類,在類中間接呼叫原有的類或物件的方法,定義出新的功能。
- 如果語言支援過載,可以用過載實現對不同型別的物件的統一對外介面。
- 對於不支援過載的語言,可以通過介面來提供統一對外介面。
- 對於不支援強制介面的語言,可以通過鴨式辯型來對外提供統一介面。
因為間接呼叫來為系統新增新功能,可以對外封裝訪問多個不同類的統一介面,我們稱這種方式為訪問