概述
?????? 機(jī)房收費(fèi)系統(tǒng)的合作版自己負(fù)責(zé)的是B層和Facade層,在做這塊的時(shí)候有很多的感觸:動(dòng)態(tài)SQL語(yǔ)句;設(shè)計(jì)模式;合作開(kāi)發(fā)應(yīng)該注意的點(diǎn)。其中動(dòng)態(tài)SQL語(yǔ)句的理解已經(jīng)在上一篇博客中寫(xiě)了,如果你有意向的話,可以看一看,這篇博客主要是針對(duì)的是后兩者的敘述。
設(shè)計(jì)模式
?????? 合作開(kāi)發(fā)系統(tǒng)中運(yùn)用的設(shè)計(jì)模式:模板方法模式,外觀模式,抽象工廠+反射+配置文件,單例模式,裝飾模式,職責(zé)鏈,狀態(tài)模式,策略模式。
?????? 下面是我們系統(tǒng)代碼體系結(jié)構(gòu)圖
下面簡(jiǎn)單的介紹一下這些模式的使用。
? ? ?? 模板方法模式
? ? ? ? ? ? ? 模板方法模式在U層使用。先創(chuàng)建立了一個(gè)窗體, 在窗體上布置控件,設(shè)置相應(yīng)的屬性,把公用的代碼以函數(shù)的形式寫(xiě)在這個(gè)窗體里,在相應(yīng)的事件里寫(xiě)上相應(yīng)的代碼。這個(gè)窗體就是我們的模板,我們以繼承的方式來(lái)用這個(gè)窗體,這樣新添加的窗體就是會(huì)具有父窗體里面的所有東西,不用再寫(xiě)就可以直接用,我們也可以再重寫(xiě)相應(yīng)的代碼。
?????? 外觀模式
?????????????? 沒(méi)什么好說(shuō)的,這個(gè)模式的運(yùn)用,給上層項(xiàng)目的使用提供方便。
?????? 抽象工廠+反射+配置文件
??????????????? 運(yùn)用反射創(chuàng)建D層對(duì)象時(shí),經(jīng)過(guò)D層嗎?毋庸置疑,一定經(jīng)過(guò),不過(guò)這種經(jīng)過(guò)一種是我們看的見(jiàn)的,一種是我們看不見(jiàn)。看的見(jiàn)就是我們?cè)贒層類(lèi)中,創(chuàng)建了全局變量(對(duì)象類(lèi)型的)或有相應(yīng)的構(gòu)造函數(shù)。構(gòu)造函數(shù)是類(lèi)實(shí)例化對(duì)象時(shí)調(diào)用的方法,這個(gè)方法我們可以寫(xiě),也可以不用,當(dāng)我們寫(xiě)上后,那么實(shí)例化該類(lèi)的時(shí)候,我們單步執(zhí)行程序時(shí)就會(huì)跳轉(zhuǎn)到類(lèi)中的這個(gè)函數(shù),當(dāng)我們不寫(xiě)時(shí),系統(tǒng)會(huì)調(diào)用默認(rèn)(根父類(lèi))的構(gòu)造函數(shù),此時(shí),我們實(shí)例化類(lèi)時(shí),仍經(jīng)過(guò)這個(gè)函數(shù),但是,我們單步執(zhí)行的時(shí)候就看不見(jiàn)了;創(chuàng)建全局變量(對(duì)象類(lèi)型),我們?cè)趯?shí)例化該類(lèi)的時(shí)候,其實(shí)我們?cè)谧龅氖且患@樣的事:實(shí)例化一個(gè)對(duì)象,不過(guò)這個(gè)對(duì)象里面又有一個(gè)對(duì)象,而這個(gè)對(duì)象的執(zhí)行必須要讓代碼執(zhí)行,所以,我們單步執(zhí)行的時(shí)候,一定會(huì)看到代碼停留在那。
?????? 單例模式
????????????? 一個(gè)類(lèi)里有一個(gè)靜態(tài)方法,有一個(gè)靜態(tài)的全局變量,靜態(tài)全局變量里存放的是這個(gè)類(lèi)的對(duì)象,靜態(tài)方法是對(duì)這個(gè)靜態(tài)全局變量的判斷來(lái)做出是不是要?jiǎng)?chuàng)建自己類(lèi)的對(duì)象。我們創(chuàng)建這個(gè)類(lèi)的時(shí)候,不是用的它的構(gòu)造函數(shù),而是用的它的這個(gè)靜態(tài)方法。工廠類(lèi)和SQLHelper類(lèi)都可以用單例模式。
?????? 狀態(tài)模式?????? ? ? ??
? ? ? ? onLineBLL類(lèi)里面的SetState方法就是所有具體的狀態(tài)類(lèi)設(shè)置下一個(gè)狀態(tài)需要用到的方法,其Online方法就是對(duì)外提供的接口方法。TestOnLineBLL就是提供一個(gè)規(guī)范。每一個(gè)狀態(tài)類(lèi)里面其實(shí)就是一個(gè)If…Else舉行,Else里一般就是設(shè)置下一個(gè)具體狀態(tài)的代碼,其用的方法就是onLineBLL類(lèi)中的SetState方法,之所以能用這個(gè)方法是應(yīng)為函數(shù)中的OnLineBLL對(duì)象。狀態(tài)模式就是把復(fù)雜嵌套的If…Else拆分成多個(gè)小的If…Else。
? ? ?? 職責(zé)鏈模式
????????????? 職責(zé)鏈在圖上看和狀態(tài)模式非常的像,唯一的區(qū)別就是把“具體的狀態(tài)類(lèi)”分別替換了“TestOnLineBLL”的位置,繼承和聚合的關(guān)系。“SetState”方法在類(lèi)中被實(shí)現(xiàn)了。子類(lèi)的方法也是一個(gè)If…Else結(jié)構(gòu),不過(guò)Else里面不是具體的“State”,而是通過(guò)調(diào)用端具體的實(shí)現(xiàn)的,這樣就實(shí)現(xiàn)了,不需要知道那個(gè)類(lèi)最終會(huì)幫你完成,只要你隨便的實(shí)例化一個(gè)鏈頭,并且給其串上其他的環(huán),那么你就可以通過(guò)這個(gè)類(lèi)的方法來(lái)幫你完成這個(gè)任務(wù)。
?????? 裝飾模式
?????????????? 裝飾模式用在了管理員登陸的過(guò)程中,裝飾模式就是對(duì)象里面套對(duì)象的過(guò)程,相當(dāng)于我們的嵌套函數(shù),但嵌套的函數(shù)的功能是不同的,并且這種嵌套是我們自己設(shè)置的,這樣我們就可以動(dòng)態(tài)的實(shí)現(xiàn)添加新的功能了。
?????? 策略模式
????????????? 策略模式用在了收費(fèi)上。策略模式相當(dāng)于我們使用的簡(jiǎn)單工廠,不同的是,策略模式的“工廠類(lèi)”里面多了一個(gè)函數(shù),這個(gè)函數(shù)完成了調(diào)用具體策略方法的過(guò)程。
合作開(kāi)發(fā)注意的地方
?????? 參數(shù)的賦值情況,我們的參數(shù)一般都是對(duì)象類(lèi)型,此時(shí),我們就需要給定義一下了,這個(gè)實(shí)體的屬性都需要賦值嗎,這個(gè)實(shí)體的屬性都是在哪個(gè)層應(yīng)該被賦值;方法的作用一定要寫(xiě)清楚,有時(shí)候方法里需要判斷某個(gè)參數(shù)的屬性才能完成其邏輯任務(wù),此時(shí),我們應(yīng)該說(shuō)明一下;對(duì)于出現(xiàn)DataTable一樣的返回對(duì)象,如果需要我們進(jìn)行操作里面的數(shù)據(jù)時(shí),我們應(yīng)該說(shuō)明一下字段名;有方法返回值時(shí),要說(shuō)明一下具體返回值的含義。
總結(jié)
? ? ? ?繼續(xù)加油!
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
