Opendaylight 中 關於工廠設計模式的應用
好久沒有寫部落格了,最近工作上倒不是不忙,但是在準備考CCIE,所有休息時間都基本上交給了CCIE, 不過也確實學到了不少東西。另外,工作之後看的ODL的code比較多,感覺ODL中用的Java設計模式中,比較多的是單例和工廠模式,比較有用的還屬於工廠模式,更能體現物件導向程式設計。當然其他的還不懂,如果以後看到再進行補充。
什麼是工廠模式
在網上工廠模式的解釋有很多,http://zz563143188.iteye.com/blog/1847029, http://blog.chinaunix.net/uid-29068508-id-4076589.html
我的理解:
工廠模式就是用工廠的方法去代替new 物件,在ODL中是用可以看到有很多類名是用Provider結尾的,這些類就類似工廠模式的Factory方法,通過Factory 類的方法去new 相應的類,比方香蕉,橘子,蘋果等,並且他們都實現水果這個藉口。
ODL開發中經常用到的工廠設計模式例子
ODL中經常用到的是device,有各種各樣的device,router,switch等,這些device都會通過Blueprint或者NorthBound API 進行初始化。為了在實現自己的功能時,不會察覺出到底是哪種device,需要對device進行抽象, named by DALDevice(DAL, Device abstract layer).
下面這種架構圖中我簡單畫了下整個架構圖,其中核心就在於DeviceRestDriver類的select函式,該類類似於工廠類,通過該函式根據java的反射,就可以new出不同的例項,在put方法中就可以根據不同的REST Payload類的型別,去呼叫相應的invoke方法,也就時java的多型。
所有如果以後再遇到類似的需求,可以借用上面的架構實現。
相關文章
- OO設計模式中的工廠模式設計模式
- 設計模式 | 簡單工廠模式及典型應用設計模式
- 原始碼中的設計模式--工廠模式原始碼設計模式
- 關於工廠模式的思考模式
- 設計模式——簡單工廠(又叫靜態工廠方法,不屬於GOF23中設計模式)設計模式Go
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 設計模式----工廠設計模式設計模式
- 設計模式-工廠設計模式設計模式
- 求助:關於應用設計模式設計模式
- 【設計模式】工廠模式設計模式
- 設計模式 —— 工廠模式設計模式
- 設計模式-工廠模式設計模式
- 設計模式(工廠模式)設計模式
- 設計模式——工廠模式設計模式
- 設計模式----工廠模式設計模式
- 設計模式之工廠方法模式|抽象工廠模式設計模式抽象
- 工廠設計模式設計模式
- Java中的簡單工廠設計模式Java設計模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 設計模式學習(二)工廠模式——抽象工廠模式設計模式抽象
- 設計模式——抽象工廠模式設計模式抽象
- 設計模式 —— 抽象工廠模式設計模式抽象
- PHP設計模式-- 工廠模式PHP設計模式
- 設計模式-抽象工廠模式設計模式抽象
- Java設計模式(工廠模式)Java設計模式
- Java設計模式--工廠模式Java設計模式
- Java 設計模式(工廠模式)Java設計模式
- java設計模式-工廠模式Java設計模式
- 設計模式 - 工廠方法模式設計模式
- 設計模式之工廠模式設計模式
- java設計模式 – 工廠模式Java設計模式
- 設計模式 #2 (工廠模式)設計模式
- 設計模式之【工廠模式】設計模式
- 設計模式-工廠方法模式設計模式
- 設計模式~~~工廠方法模式設計模式
- PHP設計模式_工廠模式PHP設計模式