java面向介面程式設計

Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。以下是小編為大家搜尋整理的java面向介面程式設計,希望能給大家帶來幫助!更多經常內容請及時關注我們應屆畢業生考試網!

java面向介面程式設計

在一個面向物件的系統中,系統的各種功能是由許許多多的不同物件協作完成的。在這種情況下,各個物件內部是如何實現自己的對系統設計人員來講就不那麼重要了;而各個物件之間的協作關係則成為系統設計的關鍵。小到不同類之間的通訊,大到各模組之間的互動,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。面向介面程式設計我想就是指按照這種思想來程式設計吧!實際上,在日常工作中,你已經按照介面程式設計了,只不過如果你沒有這方面的意識,那麼你只是在被動的實現這一思想;表現在頻繁的抱怨別人改的程式碼影響了你與實現(名實分離的原則)的分離。

我們在一般實現一個系統的時候,通常是將定義與實現合為一體,不加分離的,我認為最為理解的系統設計規範應是所有的定義與實現分離,儘管這可能對系統中的某些情況有點繁煩。

介面的本身反映了系統設計人員對系統的抽象理解。

介面應有兩類:第一類是對一個體的抽象,它可對應為一個抽象體(abstract class);

第二類是對一個體某一方面的抽象,即形成一個抽象面(interface);

一個體有可能有多個抽象面。

抽象體與抽象面是有區別的。

2.設計介面的另一個不可忽視的因素是介面所處的環境(context,environment),系統論的觀點:環境是系統要素所處的空間與外部影響因素的總和。任何介面都是在一定的環境中產生的。因此環境的定義及環境的變化對介面的影響是不容忽視的,脫離原先的環境,所有的介面將失去原有的意義。

3.按照元件的開發模型(3C),它們三者相輔相成,各司一面,渾然一體,缺一不可。

面向物件是指,我們考慮問題時,以物件為單位,考慮它的屬性及方法

面向過程是指,我們考慮問題時,以一個具體的流程(事務過程)為單位,考慮它的實現

介面設計與非介面設計是針對複用技術而言的,與面向物件(過程)不是一個問題

我認為:UML裡面所說的interface是協議的另一種說法。並不是指com的interface,CORBA的interface,Java的interface,Delphi的interface,人機介面的interface或NIC的interface。

在具體實現中,是可以把UML的`interface實現為語言的interface,分散式物件環境的interface或其它什麼interface,但就理解UML的interface而言,指的是系統每部分的實現和實現之間,通過interface所確定的協議來共同工作。

所以我認為,面向interface程式設計,原意是指面向抽象協議程式設計,實現者在實現時要嚴格按協議來辦。也就是Bill Joy同志說的,一邊翻rfc,一邊寫程式碼的意思。面向物件程式設計是指面向抽象和具象。抽象和具象是矛盾的統一體,不可能只有抽象沒有具象。一般懂得抽象的人都明白這個道理。 但有的人只知具象卻不知抽象為何物。

所以只有interface沒有實現,或只有實現而沒有interface者是沒有用的,反OO的。

所以還是老老實實面向物件程式設計,面向協議程式設計,或者什麼都不面向,老老實實程式設計。

  【相關閱讀】

  java返回值過載的技巧

我們很易對下面這些問題感到迷惑:為什麼只有類名和方法自變數列出?為什麼不根據返回值對方法加以區分?比如對下面這兩個方法來說,雖然它們有同樣的名字和自變數,但其實是很容易區分的:

void f() {}

int f() {}

若編譯器可根據上下文(語境)明確判斷出含義,比如在int x=f()中,那麼這樣做完全沒有問題。然而,我們也可能呼叫一個方法,同時忽略返回值;我們通常把這稱為“為它的副作用去呼叫一個方法”,因為我們關心的不是返回值,而是方法呼叫的其他效果。所以假如我們象下面這樣呼叫方法:

f();

Java怎樣判斷f()的具體呼叫方式呢?而且別人如何識別並理解程式碼呢?由於存在這一類的問題,所以不能根據返回值型別來區分過載的方法。