对抽象工厂+反射+配置文件的实例理解
第一遍學習設計模式時,總有飄飄然的感覺.《大話設計模式》這本書雖然讀起來挺有趣味,也感覺比其他講設計模式的書好理解一些。但是真要用在機房收費系統(tǒng)時還是費勁的。米老師講過:思想要上移,行動要下移。這兩點要緊密結合,缺一不可。總在思想層面上繞,比如設計模式中所舉的生活中的例子,用在代碼中卻不是那么容易,所以必須要行動下移,認真實踐。而總在代碼中繞,不進行總結提煉概括,學習就很局限,所以我們也要不斷總結,思想上移。第二遍學習抽象工廠是在機房收費系統(tǒng)中,我想講講使用它的過程。
一.為什么要用抽象工廠
以備我們的軟件要在不同數(shù)據(jù)庫上運行。現(xiàn)在我們使用的是SQL Sever,而要使用Access或者Oracle等時就需要考慮了。抽象工廠可以使我們靈活地更換到其他數(shù)據(jù)庫上。如何能夠靈活結合UML圖進行理解。
圖中的紅色框是IDAL(接口)。我舉個生活中的例子接電的插口來理解。同一個插口我們可以插電腦,電視,電冰箱等等。只要插頭與插口的規(guī)格一致就可以。對于這張包中可以看到整個邏輯從UI到IDAL就結束了,后面的D層和Helper要看具體情況,實現(xiàn)接口的可以使SqlDAL,也可以使AccessDAL。
二.反射和配置文件是起什么作用的。
《大話設計模式》中講過抽象工廠的優(yōu)點和缺點。缺點之一就是需求增加時,比如要增加一張表。就要至少更改三個類。IFactory,SqlFactory,AccessFacotry...所以采用了簡單工廠來改進抽象工廠,而在簡單工廠中的實例化需要通過分支判斷語句來判斷。這里就引入了反射,反射主要來解決分支判斷的問題,使得實例化更加地方便。具體如何靈活需要通過實例講解。
反射使用格式:Assembly.Load("程序集名稱").CreateInstance("命名空間.類名稱“)
剛開始感覺很暈,不明白程序集名稱應該是什么?命名空間又是指得哪個?反射是用來解決分支判斷問題的,使得實例化更加方便。程序集一定是要具體實例化的地方。這里就是指D層,默認情況,程序集名稱和命名空間是同樣的。這里都是SqlDAL,當然如果是AccessDAL,程序集名稱就是指AccessDAL了。說它靈活是指可以使用配置文件指定具體是Sql還是Access。而具體的類名稱就要看你實現(xiàn)的是什么功能了。如果是登錄,那么就是UserDAL(類名稱)
三登錄實例應用
我按一條線的順序給出代碼:
B層:
[vb]?view plaincopy
[vb]?view plaincopy
接口:
[vb]?view plaincopy
配置文件:
[vb]?view plaincopy
總結
以上是生活随笔為你收集整理的对抽象工厂+反射+配置文件的实例理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机房收费系统=三层+设计模式
- 下一篇: 三层基础知识梳理