当前位置 : 主页 > 手机开发 > 其它 >

语言无关 – 这是一个糟糕的面向对象设计? (基类中使用的派生类)

来源:互联网 收集:自由互联 发布时间:2021-06-19
有人能告诉我这个班级结构是不是很糟糕吗? 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替代原则的一个概念.

网友评论