1

変更できないファットインターフェイスがあるとします。また、そのファットインターフェイスからいくつかのメソッドのみを使用したいクライアントクラスがいくつかあります。インターフェイス分離の原則を実現するために、この状況に対応するアダプタパターンをどのように実装できますか?

4

2 に答える 2

10

次のことができます。

// Assuming this is your fat interface
interface IAmFat
{
    void Method1();
    void Method2();
    ...
    void MethodN();
}

// You create a new interface that copies part of the fat interface.
interface IAmSegregated
{
    void Method1();
}

// You create an adapter that implements IAmSegregated and forward
// calls to the wrapped IAmFat.
class FatAdapter : IAmSegregated
{
    private readonly IAmFat fat;

    public FatAdapter(IAmFat fat)
    {
        this.fat = fat;
    }

    void IAmSegregated.Method1()
    {
        this.fat.Method1();
    }
}
于 2012-02-23T13:20:43.880 に答える
0

ここでは、アダプターは実際には適切なツールではありません。互換性のない2つのインターフェイスが、一方を他方に適合させることで通信できるように設計されています。この場合、エンドユーザーに基づいて機能のサブセットを異なる方法で公開する必要があります。この場合、ファサードを使用します。

class Fat{
    public string A();
    public int B(); 
    .
    public void EatMeat()
    .
    public void Z();
}
class JennyCraig{
  private Fat f = Fat();
  public string A(){
     return f.A();
  }
  public void Z(){
     return f.Z();
  }
class Atkins{
    public Fat f = Fat();

    public void EatMeat(){
         return f.EatMeat();
    }
}
于 2012-02-23T13:22:55.347 に答える