蘇航
(西華大學,四川 成都 610039)
接口的意義及在java web三層架構中的作用分析
蘇航
(西華大學,四川 成都 610039)
接口在項目就是一個業(yè)務邏輯,面向接口編程就是先把客戶的業(yè)務提取出來,作為接口。業(yè)務具體實現(xiàn)通過該接口的實現(xiàn)類來完成。當客戶需求變化時,只需編寫該業(yè)務邏輯的新的實現(xiàn)類,通過更改配置文件(例如Spring框架)中該接口的實現(xiàn)類就可以完成需求,不需要改寫現(xiàn)有代碼,減少對系統(tǒng)的影響。采用基于接口編程的項目,業(yè)務邏輯清晰,代碼易懂,方便擴展,可維護性強。即使更換一批人員,新來的人依然可以快速上手。對于公司來說,意義更大。
接口;三層架構;java;web
接口編程一直被稱為java界春天的Spring框架所提倡。在一個面向對象的系統(tǒng)中,系統(tǒng)的各種功能是由許許多多的不同對象協(xié)作完成的。在這種情況下,各個對象內部是如何實現(xiàn)自己的對系統(tǒng)設計人員來講就不那么重要了;而各個對象之間的協(xié)作關系則成為系統(tǒng)設計的關鍵。小到不同類之間的通信,大到各模塊之間的交互,在系統(tǒng)設計之初都是要著重考慮的,這也是系統(tǒng)設計的主要工作內容。
三層架構分別為表現(xiàn)層,業(yè)務邏輯層,數據訪問層。表現(xiàn)層主要是指與用戶交互的界面。用于接收用戶輸入的數據和顯示處理后用戶需要的數據,用于為用戶展示頁面。業(yè)務邏輯層是主要是針對具體的問題的操作,也可以理解成對數據層的操作,對數據業(yè)務邏輯處理,如果說數據層是積木,那邏輯層就是對這些積木的搭建。實現(xiàn)業(yè)務邏輯。業(yè)務邏輯具體包含:驗證、計算、業(yè)務規(guī)則等等。數據訪問層與數據庫打交道。主要實現(xiàn)對數據的增、刪、改、查。將存儲在數據庫中的數據提交給業(yè)務層,同時將業(yè)務層處理的數據保存到數據庫。最重要的意義是為了實現(xiàn)程序設計界的一個重要的編程思想——解耦。
2.1 三層架構在于相鄰兩層的層層調用
表現(xiàn)層獲取用戶發(fā)送信息,調用業(yè)務邏輯層,業(yè)務邏輯層再調用數據訪問層獲取數據,然后再把數據發(fā)回表現(xiàn)層展示給用戶,達到交互目的。但是層與層之間并不知道對方對自身的具體實現(xiàn),而只需要從接口調用訪問方法即可。因為java中多態(tài)性質的存在,所以接口的調用者只需要調用接口,具體的業(yè)務交給接口的實現(xiàn)者去實現(xiàn)。使用接口,可以避免接口調用方直接參與業(yè)務邏輯實現(xiàn),所以能避免接口調用與業(yè)務邏輯實現(xiàn)緊密關聯(lián),即解耦。
2.2 接口來源于生活
接口就是標準。生活中有很多接口。如水龍頭水管接口、電源接口等?,F(xiàn)在有很多的水龍頭生產商,在采用接口之前,廠商要同時提供水龍頭和下水管,它們是一體的,不能變更。同時也只適用于他的這一種產品。而有了接口之后,廠商就就不用去管它的下水管如何設計了,只用安裝接口標準來生產水龍頭,完成后直接接到下水管上就可以了。這就是面向接口。這樣的話你的下水管就可以使用所有的符合下水管標準的水龍頭,而不是之前的一種水龍頭。而且更換水龍頭更加的方便。
2.3 程序中的類比
放在程序中說就是:如果一個類不能確定它最后的類型,就是說不知道它以后要被實現(xiàn)成什么樣,就可以采用面向接口的編程。所有需要這個類的地方都設成一個接口,而讓這個類實現(xiàn)這個接口。后期要更改的時候只用實現(xiàn)這個接口就可以了。
2.4 接口在Java類庫中的意義
Java本身也是一個不斷完善的語言,他也在頻繁的改動他的系統(tǒng)API來完善,他的API是一個龐大的體系,互相關聯(lián),如果不采用接口,而都是用實現(xiàn)類的話,那么API的改動就會給整個體系帶來不穩(wěn)定。而且如果改動API,那么就會有大量采用舊API的項目因無法正常運行,會損失大量客戶。換句話說,JDK已經發(fā)布的API是一種承諾,一經發(fā)布就不能更改,即使原來API存在各種各樣的問題(例如java.util.Properties類就是一個失敗的例子)也必須保留,于是在Java里就出現(xiàn)了不建議使用的方法,但JDK依然提供該方法。而且Java語言本身是一個跨平臺的語言,為了滿足在各個平臺下運行,就必須把各種操作做成接口,在編寫各個平臺下的實現(xiàn)類。
Java接口是一系列方法的聲明,是一些方法特征的集合,一個接口只有方法的特征沒有方法的實現(xiàn),因此這些方法可以在不同的地方被不同的類實現(xiàn),而這些實現(xiàn)可以具有不同的行為(功能)。接口本質上就是由制定者來協(xié)調實現(xiàn)者和調用者之間的關系。所以通常說的“面向接口編程”可以理解為:只有實現(xiàn)者和調用者都遵循“面向接口編程”這個準則,制定者的協(xié)調目的才能達到。為了抽象系統(tǒng)的某種公共行為,或者封裝變化性,進行系統(tǒng)設計的時候你需要抽取出接口,這樣將來你的系統(tǒng)將更加靈活。
java接口的用處主要體現(xiàn)在下面幾個方面:通過接口可以實現(xiàn)不相關類的相同行為,而不需要了解對象所對應的類。通過接口可以指明多個類需要實現(xiàn)的方法。通過接口可以了解對象的交互界面,而不需了解對象所對應的類。類描述了一個實體,包括實體的狀態(tài),也包括實體可能發(fā)出的動作。接口定義了一個實體可能發(fā)出的動作。但是只是定義了這些動作的原型,沒有實現(xiàn),也沒有任何狀態(tài)信息。所以接口有點象一個規(guī)范、一個協(xié)議,是一個抽象的概念;而類則是實現(xiàn)了這個協(xié)議,滿足了這個規(guī)范的具體實體,是一個具體的概念。
優(yōu)點:接口和實現(xiàn)分離了,適于團隊的協(xié)作開發(fā)。主要為了實現(xiàn)松散耦合的系統(tǒng),便于以后升級,擴展。
缺點:設計艱難,在你沒有寫實現(xiàn)的時候,就得想好接口,接口一變,全部亂套,這就是所謂的設計比實現(xiàn)難。
[1] 范銀琛.Java語言中的接口應用[J].電腦知識與技術(學術交流),2007,2(7):161,208.
[2] 黃光芳.面向接口編程在三層架構系統(tǒng)中的設計及應用[J].計算機應用與軟件,2009,26(6):133-135.
[3] 張振蕊,翟霞.淺析Java語言中接口的應用[J].科技創(chuàng)新導報,2010,(20):37.
[4] 高本峰.Java接口和內部類的探究[J].硅谷,2012,(9):10-11.
[5] 胡啟敏,薛錦云,鐘林輝等.基于Spring框架的輕量級J2EE架構與應用[J].計算機工程與應用,2008,44(5):115-118,133.
蘇航(1993-),男,漢族,四川成都人,大學本科,西華大學軟件工程專業(yè),研究方向:java web實踐。
TP311
A
1671-1602(2016)24-0019-01