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

适配器在这里并不是真正的正确工具。它旨在使两个不兼容的接口能够通过调整一个来进行对话。在这种情况下,您希望根据最终用户以不同方式公开某些功能子集。在这种情况下,您想使用外观

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 回答