機房重構之UML圖
機房個人重構的時候,我們需要做的第一件事情便是畫圖,畫圖的第一步是畫包圖。
機房重構之包圖
包圖,很陌生的一個詞,因為在第一次畫UML圖的時候,總結得到包圖不是九種圖,就沒有畫包圖。到現在,又開始翻各種資料、看各種部落格!慢慢著手畫下包圖!
下面的包圖是經過多次修改之後的成果!
包圖其實就是一個總得框架!此包圖由三層(UI、BLL、DAL)+外觀模式(Facade)+用簡單工廠改進的抽象工廠模式+介面。
抽象工廠模式+介面解析
加抽象工廠模式的原因,是考慮到有可能需要更換資料庫。
看《大話設計模式》,我們可以知道上圖。將包圖和上圖進行對比,發現都有DataAccess,這個就是使用抽象工廠模式的地方,繼續向後看,會看到介面和繼承介面的類或者包。當我將這兩張圖放上去的時候,我想大家應該很容易明白,IUser和IDepartment相當於包圖中的IDAL,SqlserverUser、AccessUser、SqlserverDepartment和AccessDepartment這四個類相當於包圖中的DAL包。當我解釋到此的時候,我想大家應該明白為什麼用抽象工廠模式和用抽象工廠模式的原因了吧!
另外,抽象工廠模式也起到了解耦作用(B層和D層解耦)。
外觀模式解析
最開始,我用外觀模式的理解就是解耦。剛開始的時候,我沒有發現用外觀模式的好處。反而,覺得用外觀模式很累贅,明明可以一下傳到U層的東西,卻要經過外觀,而外觀中寫的程式碼和B層差不多。就好像本來五分鐘能到達目的地,卻要走彎路非要用十分鐘。
最初的想法就是為了用模式才寫的,一直抱著一種“自己做得還少,還沒有發現它的好處”的心態做著。慢慢地做到多處都要用到查詢卡號是否存在的功能,就將這個功能從B層單拿出來,在外觀將多個功能進行整合傳給U層。這才第一次發現用外觀模式的好處!
好處:為了完成客戶端的一個功能,需要進行多個操作,將著多個操作交給外觀處理之後,返回客戶端。
在U層和B層我還多加了一條線,這條線是我師傅告訴我的,這樣就可以讓我們做簡單的功能時,不至於走彎路。
我們還可以將外觀模式放到B層,作為B層中的一個類,這就類似於在U層和B層加的那一條線了!
其他
實體,是為了在三層之間進行引數的傳遞。機房重構之時序圖
敲程式碼之前,必須要知道完成某個功能需要的步驟,將這些步驟用時序圖描述出來。
從最簡單的登陸談時序圖:
時序圖只需畫到介面即可,因為DAL包是整合IDAL包,D層中的類和介面中的類是類似的,不需要多做無用功。
自我感覺用例圖很簡單,也沒有什麼需要解析的,因此省略!