介面永遠不能直接執行個體化。--msdn
但可以說這樣用
介面 執行個體 = new 實現介面的類() ; 表示產生一個實現某某介面的類的對象。
針對介面編程能協助達到物件導向開發和設計中"低耦合"的要求.
舉個例子:某公司有一台特殊印表機,還可以使用一年,一年後可能換為另一種印表機,這兩種印表機都特殊而貴.所以現在的程式希望換了印表機後也少量修改就可用.
方法:
1,定義一個印表機介面.
2,定義印表機類A,B,分別實現此介面.
3,定義一個工廠類,在類中可選擇返回由A實現的介面,或者由B實現的介面.
4,在程式中使用印表機時,就可以使用工廠類來調用印表機,而不需要知道具體的是什麼印表機.
如果印表機換了,只需要修改工廠類就行了.如果有一千個地方都調用過印表機,就不需要一個一個修改.修改一個地方就行了.介面充當一個隔離層的作用.
在物件導向的設計中,介面的作用非常重要,
//定義印表機介面
interface Iprint...{
bool PrintData(string data);
}
//定義印表機類A,實現介面
class PrintA:Iprint...{
public virtual bool PrintData(string data)...{
//具體商務邏輯略
}
}
定義印表機類B,實現介面
class PrintB:Iprint...{
public virtual bool PrintData(string data)...{
//具體商務邏輯略
}
}
//定義工廠類
class PrintFactory...{
public Iprint CreatePrint()...{
//返回一個由打機類A,或B實現的介面,比如
return new PrintA();
}
}
//通過工廠類,調用印表機
private void button1_Click(object sender,EventArgs e)...{
PrintFactory myFactory=new PrintFactory();
Iprint myPrint=myFactory.CreatePrint();
myPrint.PrintData("這樣做很方便啊");
}
所以使用介面,最好建立工廠