原文地址:http://www.php.cn/
假設我們公司有兩種程式員:VB程式員,指的是用VB寫程式的程式員,用clsVBProgramer這個類表示;Delphi程式員指的是用Delphi寫程式的程式員,用clsDelphiProgramer這個類來表示。每個類都有一個WriteCode()方法。定義如下:
class clsVBProgramer(){....WriteCode(){ //用VB語言寫代碼;}....}class clsDelphiProgramer(){....WriteCode(){ //用Delphi語言寫代碼;} ....}
現在公司來了一個項目,要求派某個程式員寫一個程式。
class clsProject(){....WritePrograme(clsVBProgramer programer)//用VB寫代碼{ programer.WriteCode();}WritePrograme(clsDelphiProgramer programer)//重載方法,用Delphi寫代碼{ programer.WriteCode();}......}
在主程式中我們可以這樣寫:
main(){ clsProject proj=new clsProject; //如果需要用VB寫代碼 clsVBProgramer programer1=new clsVBProgramer; proj.WritePrograme(programer1); //如果需要用Delphi寫代碼 clsDelphiProgramer programer2=new clsDelphiProgramer; proj.WritePrograme(programer2);}
但是如果這時公司又來了一個C#程式員,我們怎麼改這段程式,使它能夠實現用C#寫程式的功能呢?我們需要增加一個新類clsCSharpProgramer,同時在此clsProject這個類中要再次重載WritePrograme(clsCSharpProgramer programer)方法。這下麻煩多了。如果還有C程式員,C++程式員,JAVA程式員呢。麻煩大了!
但是如果改用介面,就完全不一樣了:
首先聲明一個程式員介面:
interface IProgramer(){WriteCode();}然後聲明兩個類,並實現IProgramer介面:class clsVBProgramer():IProgramer{....WriteCode(){ //用VB語言寫代碼;}....}
class clsDelphiProgramer():IProgramer{....WriteCode(){ //用Delphi語言寫代碼;} ....}
對clsProject這個類進行一下修改:
class clsProject(){....WritePrograme(IProgramer programer){ programer.WriteCode();//寫代碼}......} main(){ clsProject proj=new clsProject; IProgramer programer; //如果需要用VB寫代碼 programer=new clsVBProgramer; proj.WritePrograme(programer); //如果需要用Delphi寫代碼 programer=new clsDelphiProgramer; proj.WritePrograme(programer); }
如果再有C#,C,C++,JAVA這樣的程式員添加進來的話,我們只需把它們相關的類加進來,然後在main()中稍做修改就OK了。擴充性特別好!
另外我們如果把clsProject這個類封成一個組件,那麼當我們的使用者需要要擴充功能的時候,我們只需要在外部做很小的修改就能實現,可以說根本就用不著改動我們已經封好組件!是不是很方便,很強大!
以上就是C# 介面作用的深入理解的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!