1
假設我有一個胖的界面,不能改變。而且我還有一些客戶端類只想使用胖界面中的幾個方法。如何實現適配器模式,針對這種情況,實現接口隔離原理?如何通過實現適配模式來隔離胖界面?
假設我有一個胖的界面,不能改變。而且我還有一些客戶端類只想使用胖界面中的幾個方法。如何實現適配器模式,針對這種情況,實現接口隔離原理?如何通過實現適配模式來隔離胖界面?
這很簡單。你需要這樣的東西:
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();
}
}
適配器是不是真的在這裏正確的工具。其設計使兩個不兼容的接口能夠通過相互適應進行交談。在這種情況下,您希望基於最終用戶公開某些功能子集。在這種情況下,您想使用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();
}
}
+1沒人想的是脂肪(或分離爲此事):( – jgauffin 2012-02-23 13:26:52
所以我還需要它實現了IAmFat一類,和實例將被注入到FatAdapter構造? – 2012-02-23 13:57:55
不,如果你的脂肪類沒有接口,只需要注入該類;如果類有靜態方法,則根本不需要注入它,你可以直接在'FatAdapter'中調用其中的一個。 – Steven 2012-02-23 14:06:46