この問題に直面しているのは私だけではないと確信していますが、今まで解決策を見つけることができません。問題は以下の通りです。
レガシー システムから Web サービス (制御も変更もできません) を公開しましたが、すべてのクライアントがそれを使用しています。Web サービスからリクエストを受け取り、取得するオブジェクトは非常に複雑ですが、例として、オブジェクト B、オブジェクト C などの他のオブジェクトを含む Web サービス呼び出しからオブジェクト A を受け取ったとします。さらに、オブジェクト B と C には、いくつかのプリミティブ データ型と、それらに含まれる他のオブジェクトもあります。私の問題は、オブジェクト A 全体 (オブジェクトとサブオブジェクトを含むすべて) を検証したいということですが、ここで推奨される設計パターンはどれですか? 次に、ここでの要点は、さまざまなタイプのオブジェクト A を Web サービスから取得できることです。オブジェクト A のさまざまなタイプが本当に意味することは、オブジェクト A がクライアントに依存するということです。一部のクライアントは、含まれているオブジェクト B にデータを入力せずにオブジェクト A を送信するか、オブジェクト B を部分的に入力してからオブジェクト A に送信することさえできます。オブジェクト B にはそうでないものもあれば、オブジェクト B の要素をほとんど必要としないものもあります。言い換えると、クライアント ABC がオブジェクト B のフィールド abc を文字列型にすることを望んでおり、最大長が 25 文字であることを伝える、各クライアントの検証ルールも格納する場所があります。そのフィールドにデータが必要です。したがって、クライアントに基づいてオブジェクト A を検証する必要があります (オブジェクト B を含める必要があるクライアントもあれば、そうでないクライアントもあれば、オブジェクト B の要素をほとんど必要としないクライアントもあります)。言い換えると、クライアント ABC がオブジェクト B のフィールド abc を文字列型にすることを望んでおり、最大長が 25 文字であることを伝える、各クライアントの検証ルールも格納する場所があります。そのフィールドにデータが必要です。したがって、クライアントに基づいてオブジェクト A を検証する必要があります (オブジェクト B を含める必要があるクライアントもあれば、そうでないクライアントもあれば、オブジェクト B の要素をほとんど必要としないクライアントもあります)。言い換えると、クライアント ABC がオブジェクト B のフィールド abc を文字列型にすることを望んでおり、最大長が 25 文字であることを伝える、各クライアントの検証ルールも格納する場所があります。そのフィールドにデータが必要です。
私が実行したいいくつかの検証は
一部のオブジェクト (オブジェクト B など) のフィールドのデータ型、特定のフィールドの長さをチェックすることは、このクライアントに必要なフィールドであるか、オプションであるかなどです。
具体的な実例は非常に役立ちます。
この特定の例のオブジェクト A の構造は次のとおりです。
public class A
{
private B objectB;
private C objectC;
// and so on
}
public class B{
private E objectE;
private String name;
private int age;
// and so on
}
public class C
{
private F objectF;
private String address;
private String country;
}
public class E
{
// Members here
}
public class F
{
// Members here
}
PS: 一般的な理解のために、クラスとメンバーに任意の名前を付けました。はい、ここで Java を使用していることを忘れていましたが、設計の原則やパターンはどの言語にも適用できるため、それほど重要ではありません。皆さんからの連絡をお待ちしております.. :)