有人能告诉我这个班级结构是不是很糟糕吗? class abstract Parent{ public Child Foo(){ return new Child(); }}class Child : Parent{} 我听说从基类型中引用派生类型总是很糟糕并且设计不好的迹象.有人能
class abstract Parent{ public Child Foo(){ return new Child(); } } class Child : Parent{}
我听说从基类型中引用派生类型总是很糟糕并且设计不好的迹象.有人能告诉我为什么这是坏的,甚至是坏的?
要详细说明dkackman的答案,理想情况下,您的工厂将返回子类型的对象,但声明为父类型.class Factory { public Parent Foo() { return new Child(); } public Parent Bar() { return new OtherChild(); } }
基本思想是你的调用代码不应该关心它返回哪个子类.这是Liskov替代原则的一个概念.