假设我有一些胖接口,无法更改。而且我还有一些客户端类只想使用胖接口中的少数方法。如何针对这种情况实现适配器模式,实现接口隔离原理?
答案 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();
}
}