以最小的变化设计实现

时间:2019-11-14 07:44:15

标签: design-patterns

理论讨论

我有一个带有接口和实现的代码库。让我们将实现称为implA分布在多个.h和.cpp文件中。现在,我需要接口的替代实现。但是98%的代码是相同的。现在存在多个选项。

选项1)根据一个标志对implA进行更改并更改代码,并且在某些标志下,与implB相关的更改才会生效。这很糟糕,因为我的代码将包含很多if and else,并且事情将变得混乱且难以理解。

选项2)我必须将整个implA复制粘贴到implB,然后在implB中进行更改。这样,两个接口是分开的,但随后是设计原则。不要重复自己。如果明天在implA中存在错误,我也将不得不记住并更改implB区域中的部分内容。

选项3)将公共区域带入某个类。在这两个impls中将其用作聚合。这似乎是可行的,但是当不需要触摸implA时,我也会更改implA。我不应该触摸不需要更改的文件和实现

请提出建议

1 个答案:

答案 0 :(得分:0)

选项1-听起来像选项3,您不想更改implA。您不应该这样耦合代码,我们都知道如果/否则代码趋向于发展。

选项2-我认为这不会给您带来任何好处,因为正如您所说,每个修补程序或功能都必须在2个地方实现。

选项3-如果您可以使用implA的抽象部分来构建implB,这似乎是编写implB的较快方法,但是如果implA不够抽象而无法使用,那么我想在implA中做一些工作带来双重好处,因为它也将用于implB。

选项3听起来是最健壮和可扩展的选项。