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

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