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