寻找设计模式:没有子类的方法重写

Looking for design pattern: Method overriding without subclassing

考虑以下场景:我有一个由 Part 1Part 2 等各个部分组成的 class A,我想扩展其功能A 由 subclassing.

问题:如果我试图以同样的方式覆盖个体 "Parts" 的行为(有更好的术语吗?),我将不得不为每个部分创建一个子 class那会改变,很快就会变得混乱和混乱。

In a nutshell: I want to override class methods without resorting to subclassing.

我想到了一个解决方案,但我不确定这是否是个好主意:

假设我想覆盖 Part::Method。我可以 "fake" 一种覆盖能力,而不是使用我的语言提供的继承机制:

我可以看到这种方法的两个缺点:

My question(s): Is there an established design pattern that solves the described issue in a similar (or better) way? Are there any downsides I missed?

当您想避免 subclassing 但仍需要提供一组 classes 相关算法的能力时,您通常会查看访问者模式。

每个 class 将组成一个访问者对象,并调用其中一个函数。这消除了 subclass 多个对象只是为了获得一个方法的需要。

Visitor Pattern Example

正如上面提到的,您传递方法覆盖的示例与策略模式非常相似,但是根据您的 post...

I would have to create one subclass for each Part that changes

我假设重点是避免创建多个 classes,只提供有限的功能。您的方法覆盖示例和策略模式都需要 class 每个不同的 override/strategy (算法)。

Strategy Pattern Example

访问者只加一个class,所有逻辑都在访问者class里。无需多次subclass,只需将新算法添加到访问者具体实现中即可。