如何通过实现adaptern模式来隔离胖接口?

时间:2012-02-23 13:16:19

标签: c# oop design-patterns adapter interface-segregation-principle

假设我有一些胖接口,无法更改。而且我还有一些客户端类只想使用胖接口中的少数方法。如何针对这种情况实现适配器模式,实现接口隔离原理?

2 个答案:

答案 0 :(得分:9)

这很容易。你需要这样的东西:

interface IAmFat
{
    void Method1();
    void Method2();
    ...
    void MethodN();
}

interface IAmSegregated
{
    void Method1();
}

class FatAdapter : IAmSegregated
{
    private readonly IAmFat fat;

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

    void IAmSegregated.Method1()
    {
        this.fat.Method1();
    }
}

答案 1 :(得分:0)

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

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();
    }
}