来自非符合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