我正在构建一个 API。它的功能之一是执行一些资源分析(想象一个文档、URI 或 DB,不重要什么)并返回一个 POJOList<Finding>
所在的位置。Finding
我希望一旦从 API 返回不可变,所有数据都由 API 返回,但是,为了方便客户端 Finding
,我希望有一个方法。setUserNote(String)
这样做的原因是客户端获得了Finding
s 的列表,它可以在处理它们的同时setUserNote
将自己的数据保存在对象本身中,就像一个普通的笔记一样。我认为这将是一种简洁的便利,而不是客户端必须扩展Finding
只是添加一个变量或将其封装为实例变量,然后ExtendedFinding.someMethod() { return this.finding.someMethid(); }
对于 Finding
. 此外,至少可以说,对于客户端来说,从他从 API 中获取的内容中进行构建会很ExtendedFinding
麻烦Finding
。这就是为什么我打算只给他们一个他们可以方便使用的字段。
问题:
这是糟糕的设计吗?为什么?我以前从未做过这样的事情,也从未见过 API 类带有任意数据持有者变量以方便客户使用。
假设这是一个糟糕的设计。什么是适用的设计模式,可以轻松地传播 Find 以由客户端构造 ExtendedFinding?当然,您可以拥有类似 public 的东西,
ExtendedFinding(Finding) { /* copy vars one by one */ }
但这远非优雅