济宁蓖乒工艺品有限责任公司

當前位置:

java認證考試基礎(chǔ)串講資料實現(xiàn)類隱藏及應(yīng)用知識詳解

發(fā)表時間:2015/4/8 11:20:45 來源:互聯(lián)網(wǎng) 點擊關(guān)注微信:關(guān)注中大網(wǎng)校微信
關(guān)注公眾號

一、類隱藏的基本建議

雖然在JAVA語言中要實現(xiàn)類的隱藏非常簡單,只需要通過三個關(guān)鍵字即可以完成。但是在大部分情況下,讓JAVA程序員感到疑惑的是,在什么時候該把什么類隱藏。確實,在JAVA開發(fā)語言平臺中,對于什么類需要隱藏,什么類不需要隱藏,往往沒有很嚴格的要求。為此程序開發(fā)人員需要根據(jù)自己的工作經(jīng)驗來進行判斷。而即使有一定程序開發(fā)經(jīng)驗的員工,也不一定能夠在這個問題上給出很好的答案。公說公有理,婆說婆有理,為此很難有一個統(tǒng)一的標準。筆者下面幾個建議,也是對自己這幾年來JAVA開發(fā)工作的總結(jié)。希望這些建議能夠幫助大家解惑。

1、不同模塊之間的類要相互隱藏?,F(xiàn)在不少應(yīng)用系統(tǒng),為了提高開發(fā)效率,都提出了模塊化的設(shè)計理念。如最近比較流行的ERP系統(tǒng),如果按模塊來進行設(shè)計的話,則在開發(fā)時不同的人員可以負責(zé)各自的模塊,而互不干涉。在ERP系統(tǒng)出售的時候,也可以按模塊來進行出售,因為各個模塊的功能是相對獨立的。當然這只是從管理層面來說模塊化設(shè)計的重要性,不過這不是我們今天要談?wù)搩?nèi)容的重點。今天要談的是,如果應(yīng)用系統(tǒng)按模塊化來進行設(shè)計,那么不同模塊之間的內(nèi)如何實現(xiàn)隱藏呢?其實很簡單。如供應(yīng)商基本信息維護、供應(yīng)商進貨單、應(yīng)付帳款分屬于三個不同的模塊,分別為采購管理、庫存管理與應(yīng)收應(yīng)付管理?,F(xiàn)在在設(shè)計應(yīng)收應(yīng)付這個模塊時其中有一個生成應(yīng)付帳款的類,其需要用到采購管理模塊中供應(yīng)商的信息(付款條件等等)、倉庫管理模塊中的供應(yīng)商進貨單據(jù)(產(chǎn)品編號、數(shù)量、到貨日期等等),然后才能夠生成準確的應(yīng)付帳款。那么在應(yīng)用程序設(shè)計的時候該如何實現(xiàn)呢?是在那個應(yīng)付帳款作業(yè)對應(yīng)的類中直接從數(shù)據(jù)庫中去查詢這些信息嗎,又或者去修改采購模塊中對應(yīng)的類來實現(xiàn)?這雖然都可以達到預(yù)定的目的,但是都不是上上之策。個人認為,最好的方法就是程序開發(fā)人員先設(shè)計一個類(如Vender類),這個類會返回供應(yīng)商編號、付款條件等信息。然后應(yīng)付帳款作業(yè)中的類就直接調(diào)用這個類獲取需要的信息。一方面可能很多地方都需要用到這些信息,如果每次需要的時候都利用SQL代碼來獲取這些信息的話,那么代碼量也會很大。相反直接調(diào)用類來實現(xiàn)這些信息反而更加的方面。另一方面,這個Vender類對于其他類是隱藏的。也就是說,其他類只能夠通過預(yù)定義的接口向這個類傳遞參數(shù)并直接引用其返回的結(jié)果,而不能夠修改類內(nèi)部的元素。如此即使其他有十幾個類或者應(yīng)用程序需要調(diào)用這個類的時候,其只要輸入的參數(shù)相同,則其返回的結(jié)果也就相同。那么其他類在引用返回結(jié)果的時候,就不用擔(dān)心不兼容了。所以,應(yīng)用程序的模塊化設(shè)計促使JAVA程序要實現(xiàn)類與類之間的隱藏;同時JAVA類相互之間隱藏的特性也方便了應(yīng)用程序的模塊化設(shè)計。

2、數(shù)據(jù)類型類與其他類之間需要實現(xiàn)隱藏。在任何一個應(yīng)用程序開發(fā)過程中,都需要根據(jù)企業(yè)的需要設(shè)計一些比較有針對性的數(shù)據(jù)類型。因為光靠應(yīng)用程序所提供的那些數(shù)據(jù)類型往往不能夠滿足程序開發(fā)人員的需要。如需要設(shè)計一些數(shù)組、記錄等等數(shù)據(jù)類型。但是在設(shè)計這些數(shù)據(jù)類型的時候,程序人員就需要了一個難題。如現(xiàn)在在開發(fā)ERP系統(tǒng)的過程中,多個模塊(每個模塊由不同的程序員負責(zé))都需要用到同一個記錄數(shù)據(jù)類型。那么是每個程序員都設(shè)計一個記錄類型的數(shù)據(jù)類型,還是共用同一個數(shù)據(jù)類型呢?如果各管各的,就需要建立多個記錄類型的數(shù)據(jù)類型,管理起來比較麻煩,對后續(xù)升級也會遇到障礙。而如果大家共用一個記錄類型的數(shù)據(jù)類型,大家又擔(dān)心其他程序人員不小心修改了這個數(shù)據(jù)類型而給他們造成了麻煩。這之間難道就沒有和平的共存方式了呢?其實,在應(yīng)用程序開發(fā)的過程中可以認為的將應(yīng)用程序開人人員分為數(shù)據(jù)類型創(chuàng)者者與業(yè)務(wù)邏輯開發(fā)者。然后數(shù)據(jù)類型開發(fā)者可以根據(jù)其他開發(fā)人員的需要創(chuàng)建一些定義數(shù)據(jù)類型的類,這些類的話對于其他程序開發(fā)人員開發(fā)的類是隱藏的。也就是說,其他類不能夠?qū)@個數(shù)據(jù)類型進行修改。那么即可以提高這些數(shù)據(jù)類型的利用率,而且也可以保證其他類可以以固定的格式引用這些類。

3、業(yè)務(wù)層與表示層之間的類要相互隱藏。利用過J2EE開發(fā)平臺的人肯定知道,在開發(fā)應(yīng)用程序的時候,業(yè)務(wù)邏輯層與表示層之間是相互獨立的。業(yè)務(wù)邏輯層主要實現(xiàn)一些負責(zé)的運算,如物料需求計劃運算。而表示層的話只負責(zé)一些具體的顯示。如通過瀏覽器客戶端來顯示結(jié)果還是通過軟件窗口來顯示運算結(jié)果。雖然客戶端所采用的方式不同,但是其內(nèi)部的運算是相同的。此時最好把實現(xiàn)業(yè)務(wù)邏輯層的類與實現(xiàn)表示層的類相互隱藏起來。因為在實際開發(fā)過程中,他們往往是由不同的程序開發(fā)人員完成的。為了避免不同程序開發(fā)人員之間的相互干擾,避免表示層的開發(fā)人員無意中修改了業(yè)務(wù)邏輯層的JAVA類,就必須要把業(yè)務(wù)邏輯層的類隱藏起來。也就是說,表示層開發(fā)人員只需要知道業(yè)務(wù)邏輯層的類需要哪些參數(shù)、能夠以什么樣的形式返回結(jié)果即可。然后表示層的類在調(diào)用業(yè)務(wù)邏輯層中的類的時候,只需要按照要求輸入?yún)?shù)、按照規(guī)則獲取結(jié)果即可,而不需要關(guān)注其業(yè)務(wù)邏輯層類內(nèi)部的實現(xiàn)機制,從而減輕了表示層開發(fā)人員的工作量。同時也避免了業(yè)務(wù)層開發(fā)人員對這個類進行修改,從而其他的應(yīng)用程序開發(fā)人員可以以同一種方式來引用這些類。

4、如果某個業(yè)務(wù)邏輯還不怎么完善時,要執(zhí)行隱藏。在應(yīng)用程序開發(fā)的過程中,可能某些業(yè)務(wù)邏輯暫時沒有很好的解決方案,但是需要的參數(shù)或者返回的結(jié)果是確定的。此時可以把這個業(yè)務(wù)邏輯建立一個的類,并對其他類進行隱藏。如此的話,當出現(xiàn)更好的解決方案之后,就可以直接更改這個類中的業(yè)務(wù)邏輯。由于類中成員對于其他程序人員是隱藏的,為此對類中的處理機制進行更改并不會影響到其他人員開發(fā)的應(yīng)用程序。他們只關(guān)心你能夠在最短時間內(nèi)獲得準確的結(jié)果。為此在遇到這種情況時,最好把類與其他的類執(zhí)行隱藏。

可見,哪些類需要相互隱藏可能判斷起來比較復(fù)雜。但是有一個普遍適用的原則,就是如果一個類有不同的程序人員需要引用。如用戶A設(shè)計了一個統(tǒng)計應(yīng)收帳款余額的類,用戶B與C,包括用戶A都需要調(diào)用這個類。那么這個類就最好進行隱藏。防止其他類在調(diào)用這個類的時候,不小心修改了其內(nèi)部的實現(xiàn)方式。這會對其他用戶調(diào)用這個類產(chǎn)生不利影響。

二、實現(xiàn)JAVA類隱藏的三個關(guān)鍵字

之所有要實現(xiàn)JAVA類隱藏,主要是讓任何程序開發(fā)人員都無法觸及他們不應(yīng)該初期的部分(如業(yè)務(wù)邏輯或者數(shù)據(jù)類型的內(nèi)部操作)。雖然項目管理員可能在程序開發(fā)過程中多次告誡團隊成員不要直接操作其他開發(fā)人員所設(shè)計類中的成員。但是如果缺乏一定的控制手段,這些事情往往會在有意無意中發(fā)生。為此需要采取一些強制的手段來防止這些情況的發(fā)生。而且這些事現(xiàn)方式必須簡單,不能夠太過于復(fù)雜。在JAVA語言平臺中,就提供了Public、private、protected三個關(guān)鍵字來實現(xiàn)對類的隱藏與控制。

這些關(guān)鍵字決定了類或者類中的成員是否對其他類是隱藏的,能否被其他類進行操作與修改。如public關(guān)鍵字表示緊隨其后的元素對任何人都是可用的,可以被任何人所修改。而關(guān)鍵字Private則表示除了類創(chuàng)建者和這個類型的內(nèi)部方法之外的任何人都不能夠進行訪問。而關(guān)鍵Protected的作用跟Private類似,只是其是作用在繼承中的。

可見在JAVA程序開發(fā)中,要實現(xiàn)類的隱藏是很簡單的,也是JAVA程序員必須要掌握的一項基本功。而其難度就在于在適當?shù)臅r候?qū)崿F(xiàn)類和類中成員的隱藏。這就要程序員在程序開發(fā)過程中好好琢磨了。上面提到的一些建議可供大家做參考。

編輯推薦

java認證考試基礎(chǔ)串講資料匯總

JAVA認證考試報考指南 / 更多JAVA考試資料

(責(zé)任編輯:xy)

2頁,當前第1頁  第一頁  前一頁  下一頁
最近更新 考試動態(tài) 更多>
万全县| 武定县| 阳原县| 新兴县| 杭锦后旗| 静海县| 鹤岗市| 东至县| 乌鲁木齐县| 武清区| 通道| 崇明县| 泰顺县| 沙洋县| 和龙市| 黑山县| 绥化市| 东光县| 绵竹市| 嘉黎县| 周口市| 石棉县| 南靖县| 兴安县| 遵化市| 漳浦县| 平湖市| 民县| 巴彦淖尔市| 蓬莱市| 铁岭市| 府谷县| 达孜县| 科技| 云南省| 沁水县| 赤峰市| 昌黎县| 鹤庆县| 石城县| 黔东|