008.在C#中,顯式介面VS隱式介面

來源:互聯網
上載者:User

標籤:

原文http://www.codeproject.com/Articles/1000374/Explicit-Interface-VS-Implicit-Interface-in-Csharp

(Aty表示本人) 介紹什麼是顯式和隱式介面什麼時候需要顯式介面更簡潔的方法(ISP:介面隔離原則)顯式介面更多結論  介紹        文章將討論下顯式介面,討論它們與隱式介面的區別,以及為什麼應該避免使用。 什麼是顯式和隱式介面        C#中有兩種方式來實現介面:顯式和隱式        定義如下介面:          當我們隱式的實現該介面時,代碼如下:        絕大多數開發人員實現介面都使用隱式實現。當我們要顯式實現介面時,Send方法和Recevie方法將被定義成私人的,代碼如下:            簡單地來講,隱式實現的方法是公開的(public),而顯式實現的方法是私人的(private)。那問題來了,為什麼會有public和private之分,又是什麼情況下使用這兩種實現方式。  什麼時候需要顯式介面        讓我先事先聲明:                當你的具體類不需要包含這個介面抽象時,可以使用顯式實現。        我可以感覺到有多難理解以上聲明。        我會慢慢地講解,首先我們要理解"抽象"的含義。抽象:從用戶端的角度,只需要顯示必要的方法和屬性。        以WeatherService類為例       如果有兩個層對它進行調用,UI層和資料層。兩個層關注的測重點不一樣。在UI層中只是關心City和Temperature這兩個屬性,而資料層只關心Send和Receive這兩個方法的調用         對於編程的最佳實務,我再聲明一句:            一個好的軟體架構擁有許多抽象類別。                如果使用隱式實現,Send和Receive方法為公開的,則如果在UI層中調用,Send和Receive方法是可見的,但並沒有使用到。一個好的方法則將實現改為顯式實現,則方法為私人的,UI層中看不到這兩個方法。那如何能使用這兩個方法呢?在資料層中,如下調用: 更簡潔的方法(ISP:介面隔離原則)        介面隔離原則:用戶端不應該依賴它不需要的介面;一個類對另一個類的依賴應該建立在最小的介面上。使用多個專門的介面比使用單一的總介面要好。(百度百科)。        一個比較好的實現是再建立一個介面,IWeather介面,如下:        都通過隱式實現,這樣在調用的過程中,UI將變數類型定義為IWeather,資料層定義為IRequest。        (註:其實Aty對這個還是不明白的,定義一個抽象類別更好,介面定義行為,可能作者只是想說明介面隔離這個概念)         顯式介面更多
     當一個類實現多個介面時,而介面中又包含同名的方法,則需要使用顯式實現。
  顯式介面結論    1.顯式實現應該要避免,推薦使用ISP介面隔離原則    2.在一種情況下可以使用,當你出於某些原因,不能為具體類賦予介面的行為時則使用顯式實現

008.在C#中,顯式介面VS隱式介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.