2016-03-31 8 views
0

Amazon S3とRiak CSの両方と通信するサービスを2つ作る必要があります。クライアントライブラリのクラス構造

これらは同じ操作を処理します。画像を取得する。

異なるオブジェクトを返すため、S3ではS3Objectを返します。共通のインタフェースを持たずにそれぞれに異なるクラスを持つようにこれを設計する適切な方法はありますか?

私は両方に共通のインターフェイスを適用する方法を考えてきましたが、メソッドの戻り値の型は、それらが異なるためにいくつかの問題を引き起こしています。私はちょうどこれについて間違っているかもしれないとおそらくそれらを分離する必要がありますが、私はここでいくつかの説明を得ることを望んでいます。

ありがとうございます!

答えて

1

通常、さまざまな外部サービスからの応答を、共通のインターフェイスを持つ独自のクラスでラップすることで、これを行います。また、サービス自体をラップするので、サービスラッパーを呼び出すと、ラップされたデータクラスが返されます。次に、外部サービスへのすべての参照を1つのパッケージに分離しました。これにより、サービスの追加や削除も容易になります。

0

質問に対する正確な回答には、使用している言語やプラットフォームの知識が必要です。上の彼の答えでは、あなた自身のクラスの中にデータをラップすることは、これを扱う一つの方法です。ただし、言語によっては、最終実装の詳細が異なり、戻り値の型を追加する際に必要な作業量も異なります。 例えば、Javaでは、これを処理する1つの方法は、異種のコンテナを返すことです。このスレッドをご覧ください: Type safe heterogeneous container pattern to store lists of items