2019獨角獸企業重金招聘Python工程師標準>>>
方法調用的四種方式
- 直接調用:通過類或者實例直接調用其方法。
- 接口調用或者轉型調用:通過將實例回調給一個接口對象,或者轉型為一個父類的實例,來調用
- 間接調用:將對象當參數傳給一個方法,在這個方法中調用對象的方法
- 間接接口調用:就是第二和第三種的結合,方法以一個接口或者一個父類為形參,傳入對象的時候自動的回調或轉型
接口的兩種類型
- 強制性接口,這類接口是在類聲明的時候需要顯式聲明的。即接口方法的實現必須放在類體里面。
- 非強制型接口,即鴨子辯型。對于支持動態綁定(在類體外部為類或實例添加方法)的語言,顯然在類定義時聲明接口是不夠用的。所以基本都通過反射功能來支持非強制型接口。而強制接口是定義了一個回調函數,來實現對象轉變為接口對象的。
在不破壞既有封裝性的基礎上,為系統新增功能
即不修改原先的類定義。
- 對于支持動態綁定的語言,可以直接動態添加一個方法。在某種程度上還是破壞了原有的封裝性。
- 采用間接調用的方法,定義一個新的類,在類中間接調用原有的類或對象的方法,定義出新的功能。
- 如果語言支持重載,可以用重載實現對不同類型的對象的統一對外接口。
- 對于不支持重載的語言,可以通過接口來提供統一對外接口。
- 對于不支持強制接口的語言,可以通過鴨式辯型來對外提供統一接口。
因為間接調用來為系統新增新功能,可以對外封裝訪問多個不同類的統一接口,我們稱這種方式為訪問者模式