關(guān)于J2EE層次設(shè)計(jì)架構(gòu)實(shí)例的分析詳解

字號(hào):

Part 1 層
    層(layer)這個(gè)概念在計(jì)算機(jī)領(lǐng)域是非常了不得的一個(gè)概念。計(jì)算機(jī)本身就體現(xiàn)了一種層的概念:系統(tǒng)調(diào)用層、設(shè)備驅(qū)動(dòng)層、操作系統(tǒng)層、CPU指令集。每個(gè)層都負(fù)責(zé)自己的職責(zé)。網(wǎng)絡(luò)同樣也是層的概念,最的OSI的七層協(xié)議。
    層到了軟件領(lǐng)域也一樣好用。為什么呢?我們看看使用層技術(shù)有什么好處:
    ● 你使用層,但是不需要去了解層的實(shí)現(xiàn)細(xì)節(jié)。
    ● 可以使用另一種技術(shù)來(lái)改變基礎(chǔ)的層,而不會(huì)影響上面的層的應(yīng)用。
    ● 可以減少不同層之間的依賴。
    ● 容易制定出層標(biāo)準(zhǔn)。
    ● 底下的層可以用來(lái)建立頂上的層的多項(xiàng)服務(wù)。 當(dāng)然,層也有弱點(diǎn):
    ● 層不可能封裝所有的功能,一旦有功能變動(dòng),勢(shì)必要波及所有的層。
    ● 效率降低。
    當(dāng)然,層最難的一個(gè)問題還是各個(gè)層都有些什么,以及要承擔(dān)何種責(zé)任。
    典型的三層結(jié)構(gòu)
    三層結(jié)構(gòu)估計(jì)大家都很熟悉了。就是表示(presentation)層, 領(lǐng)域(domain)層, 以及基礎(chǔ)架構(gòu)(infrastructure)層。
    表示層邏輯主要處理用戶和軟件的交互?,F(xiàn)在最流行的莫過(guò)于視窗圖形界面(wimp)和基于html的界面了。表示層的主要職責(zé)就是為用戶提供信息,以及把用戶的指令翻譯。傳送給業(yè)務(wù)層和基礎(chǔ)架構(gòu)層。
    基礎(chǔ)架構(gòu)層邏輯包括處理和其他系統(tǒng)的通信,代表系統(tǒng)執(zhí)行任務(wù)。例如數(shù)據(jù)庫(kù)系統(tǒng)交互,和其他應(yīng)用系統(tǒng)的交互等。大多數(shù)的信息系統(tǒng),這個(gè)層的的邏輯就是存儲(chǔ)持久數(shù)據(jù)。
    還有一個(gè)就是領(lǐng)域?qū)舆壿?,有時(shí)也被叫做業(yè)務(wù)邏輯。它包括輸入和存儲(chǔ)數(shù)據(jù)的計(jì)算。驗(yàn)證表示層來(lái)的數(shù)據(jù),根據(jù)表示層的指令指派一個(gè)基礎(chǔ)架構(gòu)層邏輯。
    領(lǐng)域邏輯中,人們總是搞不清楚什么事領(lǐng)域邏輯,什么是其它邏輯。例如,一個(gè)銷售系統(tǒng)中有這樣一個(gè)邏輯:如果本月銷售量比上個(gè)月增長(zhǎng)10%,就要用紅色標(biāo)記。要實(shí)現(xiàn)這個(gè)功能,你可能會(huì)把邏輯放在表示層中,比較兩個(gè)月的數(shù)字,如果超出10%,就標(biāo)記為紅色。
    這樣做,你就把領(lǐng)域邏輯放到了表示層中了。要分離這兩個(gè)層,你應(yīng)該現(xiàn)在領(lǐng)域?qū)又刑峁┮粋€(gè)方法,用來(lái)比較銷售數(shù)字的增長(zhǎng)。這個(gè)方法比較兩個(gè)月的數(shù)字,并返回boolean類型。表示層則簡(jiǎn)單的調(diào)用該方法,如果返回true,則標(biāo)記為紅色。