C# 基礎(二十)C# 介面詳細解析:介面的定義、介面的優點、介面應用舉例
一、簡介
1、介面的定義
常用的介面,一般定義了 方法和屬性,比如:
//賬戶介面1(所有銀行賬戶類都要繼承此介面)
public interface IBankAccount
{
void PayIn(decimal amount);//存錢函式
bool Withdraw(decimal amount);//取錢函式
decimal Balance { get; }//賬戶餘額
}
參考:https://blog.csdn.net/liuqinghui1990/article/details/77171051
再比如:
public interface IBark
{
void Bark();
}
參考:http://blog.jobbole.com/85751/
2、介面的優點
1、便於統一管理程式碼(規範化程式碼)。
比如每個類都呼叫WriteLine()的方法來輸出,我們就知道WriteLine是啥意思了,一眼就懂。要是每個你用WriteLineAA()來輸出,我用WriteLineBB()來輸出,他用WriteLineCC()來輸出,會給整個專案的造成困擾,因為輸出方法太多了,會浪費我時間去理解每個方法含義。
2、精簡程式碼
介面的作用,其實最大的好處就是簡單程式碼
二、介面的應用舉例1(介面精簡程式碼舉例1)
參考:http://blog.jobbole.com/85751/ (自己慢慢看,看兩份鍾就明白了)
假設我們公司有兩種程式設計師:VB程式設計師,指的是用VB寫程式的程式設計師,用clsVBProgramer這個類表示;Delphi程式設計師指的是用Delphi寫程式的程式設計師,用clsDelphiProgramer這個類來表示。每個類都有一個WriteCode()方法。定義如下:
class clsVBProgramer() { WriteCode() { //用VB語言寫程式碼; } } class clsDelphiProgramer() { WriteCode() { //用Delphi語言寫程式碼; } }
現在公司來了一個專案,要求派某個程式設計師寫一個程式。
lass 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();//寫程式碼
}
......
}
這麼一改,它的優勢就體現了出來(優勢1)。只需要WritePrograme(IProgramer programer)這行就行,根本就不之前的class clsVBProgramer():IProgramer、 WritePrograme(clsDelphiProgramer programer)兩行。
好了,還有第二個優勢在主程式中:
main()
{
clsProject proj=new clsProject;
IProgramer programer;
//如果需要用VB寫程式碼
programer=new clsVBProgramer;//以後我們只需要改變clsVBProgramer即可
proj.WritePrograme(programer);
//如果需要用Delphi寫程式碼
programer=new clsDelphiProgramer;
proj.WritePrograme(programer);
}
另外我們如果把clsProject這個類封成一個元件,那麼當我們的使用者需要要擴充功能的時候,我們只需要在外部做很小的修改就能實現,可以說根本就用不著改動我們已經封好元件!是不是很方便,很強大!如果再有C#,C,C++,JAVA這樣的程式設計師新增進來的話,我們只需把它們相關的類加進來,然後在main()中稍做修改就OK了。擴充性特別好!
三、介面的應用舉例2(介面精簡程式碼舉例2)
參加:https://blog.csdn.net/liuqinghui1990/article/details/77171051
四、總結
透過現象才能看到本質,雖然你搬運很多程式碼併成功的應用起來,但是你不知道它的本質,別人用什麼,你就用什麼。所以,你只能解答問題,但你不能解決問題並創造新事物新藍圖。
透過現象才能看到本質,雖然你搬運很多程式碼併成功的應用起來,但是你不知道它的本質,別人用什麼,你就用什麼。所以,你只能解答問題,但你不能解決問題並創造新事物新藍圖。
透過現象才能看到本質,雖然你搬運很多程式碼併成功的應用起來,但是你不知道它的本質,別人用什麼,你就用什麼。所以,你只能解答問題,但你不能解決問題並創造新事物新藍圖。