使用对象作为属性而不是从其类继承的好处

时间:2019-06-18 08:14:16

标签: oop inheritance composition

我正在用JavaScript开发开源软件,并创建了几个实现不同功能的类。
尽管我目前不打算从这些类中继承,但我仍在考虑防止将来的其他开发人员通过抛出错误(或至少是警告)来阻止此类开发。
我读到(并且也理解)如果有人扩展我的类然后改变它的功能,导致子类的中断,它会变得非常讨厌,并且最好使用对象组合而不是继承。
我的问题是:为什么拥有这样的东西(据我所了解的那样)会更好:

class foo{
  constructor(){}

  doSomething(){
    console.log('something');
  }
}

class bar{
  constructor(){
    this.myFoo = new Foo();
  }

  doSomethingElse(){
    myFoo.doSomething();
    console.log('else');
  }
}

比类似这样的东西(继承):

class foo{
  constructor(){}

  doSomething(){
    console.log('something');
  }
}

class bar extends foo{
  constructor(){}

  doSomethingElse(){
    super.doSomething();
    console.log('else');
  }
}

我认为更改 doSomething()会以任何一种方式破坏子类。 我是否缺少某些东西,还是拇指法则更倾向于继承而不是继承对我的情况不适用?

0 个答案:

没有答案