ここでは、ファクトリメソッドとアダプタパターンの組み合わせを使用する必要があります。ファクトリメソッドはネイティブAPIクラスのオブジェクト(Googleなど)を作成し、アダプタは共通のインターフェイスを提供します。だから、基本的には、次の手順を実行します
- ( サードパーティのAPIオブジェクトを参照することにより、すべての異なるAPIのためのアダプタインターフェイスを実装し
- (あなたが必要とするすべての操作をリスト)あなたのAPI操作のためのアダプタインターフェイスを作成します。各APIに異なるクラスを作成する必要があります)
- ファクトリメソッドでは、アダプタインターフェイスのタイプを返します。
- これで、ファクトリメソッドから返されたオブジェクトを呼び出しコードで消費することができます。
以下はサンプルコードです。これはC#を使用しています。以下のコードをいくつか修正することができます。
public interface IApiAdapter
{
void Read(int id);
void Write(string data);
}
public class GoogleApiAdapter : IApiAdapter
{
private GoogleApiClass _googleApiClass;
public void Read(int id)
{
//some additional work
//call google api
_googleApiClass.readSomeData(id);
}
public void Write(string data)
{
//some additional work
//call google api
_googleApiClass.writeSomeData(data);
}
}
public class FacebookApiAdapter : IApiAdapter
{
private FacebookApiClass _facebookApiClass;
public void Read(int id)
{
//some additional work
//call facebook api
_facebookApiClass.readSomeData(id);
}
public void Write(string data)
{
//some additional work
//call facebook api
_facebookApiClass.writeSomeData(data);
}
}
public class ApiFactory
{
public static IApiAdapter GetApiFactory(string type)
{
if(type == "google")
{
return new GoogleApiAdapter();
}
if(type == "facebook")
{
return new FacebookApiAdapter();
}
}
}
//calling code
IApiAdapter api = ApiFactory.GetApiFactory("google");
api.Read(2);
現在のところ、関連性のない別のクラスです。はい、すべてのクラスは同じ方法で使用する必要があります。クライアントを取得したら、特定のクライアントに対して特定のメソッドを呼び出すことができます。 –