1

私は、すべて製品のリストを返すいくつかの Web サービスの API に取り組んでいます。ただし、返されるオブジェクトはまったく異なります。メンバー変数とメソッドに重複がありますが、概念的に異なるか、わずかに異なる数もあります。API を構成する最良の方法は何ですか? これはアダプターのパターンだと思いますが、よくわかりません。

たとえば、私のクラスには(実際の言語ではなく、疑似コード)があります

メンバー: webservice (タイプ: オブジェクト、複数のタイプがあり、すべて同じインターフェースに準拠しています)

メソッド: setCurrentWebservice(service) {self.webservice=service}

メソッド: getProducts() { return self.webservice.getProducts();}

また、一部のメソッドは 1 つの Web サービスでサポートされていますが、他の Web サービスではサポートされていません。「メソッドがサポートされていない」メソッドを作成する必要がありますか? それらは何を返す必要がありますか?

4

1 に答える 1

0

説明した内容から、基礎となる実装を統合するための何らかの形式のアダプターを作成する必要があります。

2つのサービスAPIに統一されたインターフェイスを提供し、実際に2つの異なる実装があるという事実を隠すことが目的である場合は、2つのサービス間のすべての違いを最終的なファサードのユーザーから隠すことを目的とする必要があります。ご指摘のとおり、あるサービスは1つの方法をサポートしているが、別の方法はサポートしていない可能性があるため、これには多少の作業が必要です。

ただし、ユーザーが使用したい基盤となる実装を簡単に切り替えられるようにするためだけに同じインターフェースを提供することが目的である場合、これはそれほど重要ではない可能性があります。おそらく、実装xがメソッドyをサポートしていないことを文書化することができます。

ここに難しい答えはありません。最初のケースでは、少なくとも2つの可能性があり、それぞれがわずかに異なるアプローチを必要とする可能性があると私が言ったように、動機を明確にする必要があります。しかし、あなたの質問に答えるには、はい、アダプターが必要ですが、最初にこのAPIを提供する理由を述べた場合にのみ、アダプターをどのように動作させるかを定義できます。

于 2009-11-26T01:30:37.993 に答える