处理API限制的最佳方法是什么?

时间:2010-08-03 20:08:13

标签: language-agnostic api refactoring

到目前为止,我们的核心域名有一个名为PersonName的抽象,其中包含firstName,lastName,middleInitial等方法。当我们将域名扩展到西班牙时,我们认为他们只谈名称,firstSurname和secondSurname,即middleInitial等对他们没有意义。

PersonName接口当前正在当前API的许多地方使用,而且SpainPersonName也应该在相同的地方使用。所以,我的选择是从PersonName扩展SpainPersonName。但是,如果我这样做,那么我将最终公开firstName,middleInitial等的API,这些API不适用于西班牙域。

我的问题是我们如何才能最好地重构目前仍然保持向后兼容性的抽象?任何重构或设计建议都非常感谢。

2 个答案:

答案 0 :(得分:1)

我不太确定你的问题是什么。通过“从PersonName扩展SpainPersonName”,你的意思是让SpainPersonName实现或继承PersonName吗?

无论如何,让我推测PersonName抽象可能是一个有缺陷的抽象。抽象必须广泛适用,至少应用于适用的情况,对吧?正如你所指出的那样,我们西班牙人不会考虑名字与姓氏。也许抽象需要重新考虑。根据我的经验,基于GivenName和FamilyName的抽象是最广泛适用的抽象,甚至对于名称顺序不是“通常”的亚洲文化也是如此。

具有建设性,我认为你需要将西班牙语的第一和第二姓氏映射到抽象的姓氏,因为那(第一和第二姓氏)是我们西班牙人所设想的“姓氏”。如果你能做到这一点,那么你做得很好。

答案 1 :(得分:1)

听起来你需要将PersonName更改为AngloPersonName并创建一个PersonName接口?

相关问题