json - 当对相似对象使用通用算法时,哪种继承/组合模式是合适的?
问题描述
我有一个小代码来反序列化具有多个键/值列表的 json,在其中两个列表中包含新元组,按字母键对列表项进行排序,然后再次重新生成 json 文件,包括按键排序的新元组。
我使用了一个基类来完成所有这些工作,子类的继承非常小,以指定其各自列表的名称(我需要这个过程来包含来自 json 文件的两个列表中的元素,我们称它们为“集合”和“隶属关系”)。
我目前的班级结构很简单:
class ValueList
{
string name;
List<ValueItem> data;
}
class ValueItem
{
string key;
string value;
}
这些是我用来序列化/反序列化 json 文件的类型。
问题是现在我只需要在其中一个列表中包含一个附加字段,即“Sets”列表的一个名为“sequence”的字段。每次添加值项时,此“序列”字段将始终具有“集合”列表中的总项数。
我试图添加一个包含键和值属性的接口 IValueItem 并在 ValueList 上使用泛型 + 扩展 ValueItem 类(添加“sequence”字段的 SetValueItem 类),但在尝试转换 SetValueItem 时出现几个编译器错误到泛型 ValueItem 类型,并且在最好的情况下,将反序列化对象转换为泛型对象时,我有一个空对象。
我还考虑过 ValueItem 类型的组合(通过动态添加“序列”字段),但我也不确定这是否是正确的方法,因为我还必须处理添加的“序列”的行为字段作为通用算法的一部分,但仅适用于“集合”列表,而不是“从属关系”列表,这让我感到困惑。
在这些情况下是否有任何适当的模式可以遵循?
提前致谢,
解决方案
推荐阅读
- android - 需要所有设备制造商的Android通用后台调度任务运行器
- java - 无法在本机查询中使用“:”作为分隔符
- python - 如何使用 group 对分类列 pandas 进行分组
- go - 从公共 API 中解耦实现
- xml - launch_background.xml 颜色到十六进制颜色
- javascript - 返回确认的嵌套报价('你确定吗?')
- web-scraping - 如何为提取的每个项目获取 url 跟踪,然后是蜘蛛?
- reactjs - act 和 useState 的单元测试错误,在 useEffect 中进行 API 调用
- java - 无法将捕获的图像存储在外部存储器中
- python - 任何可用的方法来加速 cvxpy scs 求解器?