機房重構再看外觀模式
在機房重構的剛開始過程中,我對於每一個功能都建立了一個外觀層,所以剛開始我感覺外觀怎麼沒有起到應起的作用呢,只是簡單地降低了U層和B層之間的耦合,用於傳遞引數,把UI層的引數傳遞給外觀,然後再有外觀層把引數傳遞給B層,後來跟小胖交流,才發現還是沒有理解外觀模式的用處,所以才導致了下面的問題,於是重新開始翻開書重新理解外觀到底是幹什麼用的。
這是剛開始學習設計模式時總結的一篇部落格:外觀模式。當初只是知道外觀層減少了客戶端和系統的互動過多的問題,然後讓一個外觀作為一個統一的介面。
但是這個介面是幹嘛用的?這個接口裡有什麼內容呢?現在才明白,在一個外觀類裡,可以去組合多個子系統類,決定了由哪幾個子系統類來執行。通過一個外觀類,就可以實現客戶端對多個子系統的訪問。
機房外觀:
‘學生上機
Public Function CheckInquireOnline(ByVal cardInfo As JFEntity.CardInfo) As Boolean
Dim checkExitCard As New JFBLL.checkExitCardBLL ‘判斷卡號是否存在
Dim checkOnMoney As New JFBLL.checkOnMoneyBLL ‘判斷餘額
Dim checkOn As New JFBLL.checkOn ‘判斷是否在上機
'定義繼任者
checkExitCard.setsuccessor(checkOnMoney)
checkOnMoney.setsuccessor(checkOn)
Return checkExitCard.handlecheck(request)
End Function
End Class
在學生上機的外觀裡,定義了三個B層的類,這樣就減少了UI層和B層之間互動過多的問題。
學習就是一個循序漸近,盲人摸象的過程,剛開始理解的不是很深刻,但是在後面的學習過程中又會有自己不一樣的認識和理解。