封装来自客户端的内部数据结构:将列表更改为映射



我正在处理一个遗留代码,其中配置界面如下所示:

public interface Configuration {
public List<ConfigurationData> configurationDataList;
}

截至目前,只有 1 个客户端使用配置,但不同的客户端将在不久的将来开始使用它。我还可以预见无法放入列表中的丰富配置,比方说,我可能需要存储在 Map 中。

作为我的重构练习,我想封装配置的内部数据类型,这样即使我List<>更改为Map<>也不会影响现有客户端。

请让我知道有关此的最佳实践。

如果您的 Map结构保持扁平,则可以将 Map 添加为附加访问器,并重构 List 访问器,使其仅平展映射中的值。这样,您就不会将数据加倍,它只会变成不同的形状。

从实践的角度来看,将列表标记为已弃用以阻止人们使用它可能是个好主意。这样,您就有几个版本才能停用它。

下次更新主要版本时,当有其他重大更改时,可以"安全地"删除列表。

最新更新