多態本質:介面與實現的 1:n 映射
多態讓程式透過統一介面調用不同實現,增強表達力與靈活性。最熟悉的是類型多態(介面繼承)。
繼承的雙重功能與濫用警示
- 功能 1:復用——派生類復用基類非私有成員,同一抽象層次(父子關係)。
- 功能 2:被復用——派生類以基類/介面名義被復用,抽象與具體關係(動物與狗)。
混淆兩者導致「濫用繼承」。繼承是強型別約束,物件生命週期無法改變繼承關係。復用非 OO 專利,組合往往更好。建議:目的為復用時,請考慮組合而非繼承!
委托、泛型與泛型委派的多態本質
- 委派:方法多態,消除型別約束,符合簽名即可調用,更靈活。
- 泛型:以型別參數 T 表達行為,具體化交給使用者。
- 泛型委派:融合泛型與委派抽象能力,保有靜態型別安全,極其強大。C# 語言層面直接支援(C++ Boost 亦有類似)。
GoF 早已預見泛型與委派結合的強大抽象力。