我正在用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()会以任何一种方式破坏子类。 我是否缺少某些东西,还是拇指法则更倾向于继承而不是继承对我的情况不适用?