我正在寻找一种最佳方式来实现接口实现子集之间的通用代码。为了具体描述它假设我们有一个由 A、B 和 C 实现的接口 P。再次假设 A 和 B 具有某些共同的功能(公共代码),B 和 C 具有某些共同的功能,同样 A 和 C 具有共同的功能在接口的实现中。我明白那个:
- 我们可以为每一对创建包含公共功能的中间类,然后从中间类派生类,例如,中间类 AB 实现 A 和 B 之间的公共代码,BC 实现 B 和 C 之间的公共代码,然后从 AB 派生 B和公元前。
- 为每对中的类复制代码
1 理论上应该是最佳解决方案,但是,实际上它会造成巨大的混乱,因为实际上我不仅有 3 个实现接口的类,而且还有大量的类。此外,共同的功能不仅在对之间,而且在类的大子集之间,并且有很多这样的子集。因此,我们需要有大量的中间类来实现不同子集之间的通用功能。这使得通过中间类实现变得困难/低效,因为我们需要大量的这些中间类。
我相信2也不是最好的解决方案,因为它需要代码复制,这会导致代码维护的问题。
编辑:我试图简化问题以给出清晰的图片来回应评论。