不是为了增加一行代码而重写一个方法吗?

Not rewriting a method just to add a single line of code?

这种情况一次又一次发生在我身上:我们有 class CLSinit 这样的方法:

init {
    // do A

    // do B

    // do C
}

现在,在某些情况下,我们需要在 BC 之间执行 X。制作 CLS 的子 class 并重写整个 init 方法并插入 X 对我来说似乎不是一个好的解决方案(它与 DRY 相反), 有没有我没有想到的更好的解决方案?

请注意,ABC 是小代码片段,会进行一些小调整,例如调整 UI,因此将它们放在单独的方法中可能不是一个好主意。我目前正在 JavaScript 编码,但我认为这个问题也适用于其他 PL。

我们通常向父 class 添加挂钩,我们希望在其中进行扩展。我不记得它叫什么了。也许是 template method pattern

class Foo {
  init() {
    console.log("A");
    console.log("B");
    this.doX();
    console.log("C");
  }
  doX(){}
}

class Bar extends Foo {
  doX() {
    console.log("X");
  }
}

new Bar().init();