1. 程式人生 > >由java小例子到針對(面向)接口編程

由java小例子到針對(面向)接口編程

ted href 小例子 div 好處 style 類型 http interface

在進行Java編程中經常用到以下類似的代碼,

List<String> strs = new ArrayList<String>();  

只知這是多態,像是一種規範而不知為何如此。

  編程時針對超類型(父類)進行編程,也就是說變量的聲明類型(或方法的返回類型)是超類型,而不是具體的某個子類。超類型中的各個方法的具體實現不在超類型中,而是在各個子類中。這樣在程序執行時可以根據實際狀況執行到真正的(某個子類)行為。這樣帶來的好處是,我們在聲明一個變量時無需關心以後執行時的真正的數據類型是哪種(某個子類類型),這是種解耦合(松耦合)的思想。我們之後維護的時候可以隨時將聲明的變量替換為真正需要要執行的類型,假如在上述代碼中當想要換用LinkedList來實現這個功能的時候,其它的代碼都不用改,只須要改這一行,因為接口裏聲明了子類所共有的方法。具有很高的可維護性和可擴展性。所以其實我們還可以換個說法:“針對超類型編程”,超類型則通常是接口或是一個抽象類。

  其實,這便是針對(面向)接口編程(Interface-Oriented Programming),這種設計方式將設計與實現分離。在一個面向對象的系統中,系統的各種功能是由許許多多的不同對象協作完成的。在這種情況下,各個對象內部是如何實現自己的,對系統設計人員來講就不那麽重要了,而各個對象之間的協作關系則成為系統設計的關鍵。小到不同類之間的通信,大到各模塊之間的交互,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。

更具體的解釋參考:http://toyota2006.iteye.com/blog/25232?yyue=a21bo.50862.201879

由java小例子到針對(面向)接口編程