Java定義接口變量為接收類型有什么好處(面向接口編程)


個人理解:定義接口變量為接收類型屬於面向接口的編程,通過接口的抽象能減少類之間的耦合,增加可復用性。

面向接口編程:

一種規范約束

  • 制定者(或者叫協調者),實現者(或者叫生產者),調用者(或者叫消費者)。
  • 接口本質上就是由制定者來協調實現者和調用者之間的關系。
  • 只有實現者和調用者都遵循“面向接口編程”這個准則,制定者的協調目的才能達到。
  • 接口的語義是can-do語義,表約束(Constraint)。
  • 像JDBC的規范API,不管你使用哪一套實現,我們使用的時候都是使用相同的API.

分離設計與實現

  • 使得系統可以支持開閉原則和依賴倒轉原則。設計師可以設計出接口,而程序員可以依照接口去寫實現。

解耦合

  • 在一定程度上解耦合,依賴接口還不依賴具體實現,在替換實現類的時候,可以將影響減到最小。

方便做單元測試

  • 在依賴接口的情況下,單元測試更容易,使用mock也更容易,在TDD中,測試驅動就是要讓程序易於測試。

與設計有關

  • 在一個面向對象的系統中,系統的各種功能是由許許多多的不同對象協作完成的。
  • 在這種情況下,各個對象內部是如何實現自己的對系統設計人員來講就不那么重要了;
  • 而各個對象之間的協作關系則成為系統設計的關鍵。
  • 在OSGI規范中,接口與實現的分離是用得最淋漓盡致的。

Spring的IoC

  • Spring將類的創建過程隱藏起來,實際上就是一個大的工廠,使得我們的代碼更簡潔,更易於管理和測試。

 

參考:

http://ask.csdn.net/questions/217447

http://blog.csdn.net/u010382560/article/details/48051355

http://www.cnblogs.com/chaohi/archive/2008/10/23/2330442.html

http://blog.csdn.net/u013400743/article/details/51252003

http://www.cnblogs.com/xyqCreator/archive/2012/11/06/2756687.html

http://blog.csdn.net/greenlihui/article/details/61916129

https://www.cnblogs.com/feng9exe/p/5588671.html

http://blog.csdn.net/jj_nan/article/details/70161086

http://blog.jobbole.com/44559/

http://blog.csdn.net/fireofjava/article/details/17527463


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM