首页 > 解决方案 > 如何处理兄弟继承问题?

问题描述

我有一个处理查找/保存项目的基类。为了降低save函数复杂度(因为它使用insertupdate取决于它是否被保存),我认为最好将它分成两个类,因为我的许多其他方法(这里没有写)取决于它是否被保存。这是一个简单的例子:

class ItemBase {
  constructor (initData) {
    this.data = initData
  }

  find (id) {
    const found = Model.find(this.data)
    return new SavedItemBase(found)
  }

  save () {
    const saved = this.insert(this.data)
    return new SavedItemBase(saved)
  }

  insert () {}
  update () {}
}
class SavedItemBase extends ItemBase {
  save () {
    this.update()
    return this
  }
}

玩具:

class Toy extends ItemBase {
  constructor () {
    this.name = 123
    this.id = 456
  }

  someMethod () {} // This is lost if I return a new SavedItemBase
}

Toy 的问题在于它只扩展了Item. 如果我new SavedItem在父类中返回 a Item,则原始Toy类将丢失。这是我的问题的图片:

在此处输入图像描述

我如何让玩具SavedItemBaseBase. 还是有更好的方法来实现这一点?ToySavedToyBase

标签: javascriptnode.jsclassoopecmascript-6

解决方案


推荐阅读