私はAPIを構築しています。その機能の 1 つは、いくつかのリソース分析を実行し (ドキュメント、URI、または DB を想像してください。重要ではありません) 、POJOList<Finding>
がどこにあるかを返します。API から返されたすべてのデータを使用して、API から返されたデータを不変にしFinding
たいのですが、クライアントの利便性のために単一のメソッドが必要です。 Finding
setUserNote(String)
その理由は、クライアントが s のリストを取得し、オブジェクト自体に独自のデータを保存するためにFinding
使用しながらそれらを処理できるようにするためです。setUserNote
クライアントがFinding
1 つの変数を追加するか、それをインスタンス変数としてカプセル化しExtendedFinding.someMethod() { return this.finding.someMethid(); }
、 Finding
. さらに、控えめに言っても、クライアントがAPI から取得したものから構築ExtendedFinding
するのは面倒です。Finding
そのため、便宜上使用できるフィールドを 1 つだけ提供する予定です。
質問:
これは悪いデザインですか、それはなぜですか? 私はこれまでにこのようなことをしたことがなく、API クラスにクライアントの利便性のために任意のデータ ホルダー変数が付属しているのを見たこともありません。
これは悪い設計だとしましょう。Finding を簡単に伝搬してクライアントが ExtendedFinding を構築するための適切な設計パターンは何でしょうか? 確かに、あなたは public のようなものを持つことができますが
ExtendedFinding(Finding) { /* copy vars one by one */ }
、それはエレガントではありません