假设我有一个无法更改的胖接口。而且我有一些客户端类只想使用该胖接口中的几个方法。如何针对这种情况实施适配器模式,以实现接口隔离原则?
问问题
959 次
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 回答