これは実際的な問題というより理論的な問題です。
次のような階層化されたアーキテクチャがあります。
UI <--DTO1--> UI_JavaHandler <--DTO2--> Backend
DTO1 には DTO2 よりも少し多くのデータが必要であり、正確には追加の文字列が必要です。問題は、DTO1 は DTO2 を拡張する必要があるのか、それとも DTO2 をカプセル化する必要があるのかということです。最初のケースでは、UI_JavaHandler のコードは次のようになります。
public void acceptAction(DTO1 dto1) {
//do something with dto1.getString();
backend.call(dto1);
}
一方、2番目のケースでは:
public void acceptAction(DTO1 dto1) {
//do something with dto1.getString();
backend.call(dto1.getDto2());
}
Java DTO2 の拡張は問題なく機能しますが、新しいデータを追加するためだけに拡張機能を使用するという考えは好きではありません。私は、新しい動作を追加するために拡張機能を使用することに慣れています (動物が犬と猫によって拡張されるなど)。同じ効果が集約によって使用できるため、拡張を使用するべきではありませんが、そのような (ab)use(?) に対する強い議論はありません。
一方で、私は完全に間違っているかもしれません。
これについてどう思いますか?ありがとうございました。