來自非符合LSP的Liskov Substitution Principle - www.blackwasp.co.uk反射是否違反LSP?
一個常見的指示是當一個客戶機類檢查其相關性的類型。這可能是通過讀取人爲地描述其類型的對象的屬性或通過使用反射來獲得類型。通常,switch語句將用於根據依賴類型執行不同的操作。這種額外的複雜性也違反了開放/封閉原則(OCP),因爲隨着更多的子類被引入,客戶類將需要被修改。
以下技術(使用反射)是否會導致LSP的違規?
- 依賴注入
- 反轉控制
注:我從C#的背景。
從http://blogs.msdn.com/b/simonince/archive/2008/06/30/dependency-injection-is-dead.aspx
反射;大多數(也許都是?)依賴注入容器在某種程度上依賴於反射 - 動態檢查對象並確定它們的依賴關係。
參考文獻:
How can I avoid breaking Liskov Substitution Principle (LSP)?
Does Liskov Substitution Principle also apply to classes implementing an interface?
Does this violate the Liskov substitution principle, and if so, what do I do about it?
Does GWT's ActivityMapper violate the Liskov Substitution Principle?
*「不符合LSP的一個常見指示是......反射」 - 這並不意味着反射的所有用途都違反了LSP。 – MattDavey