Opendaylight 中 關於工廠設計模式的應用

Frank範發表於2016-12-24

好久沒有寫部落格了,最近工作上倒不是不忙,但是在準備考CCIE,所有休息時間都基本上交給了CCIE, 不過也確實學到了不少東西。另外,工作之後看的ODL的code比較多,感覺ODL中用的Java設計模式中,比較多的是單例和工廠模式,比較有用的還屬於工廠模式,更能體現物件導向程式設計。當然其他的還不懂,如果以後看到再進行補充。

什麼是工廠模式

在網上工廠模式的解釋有很多,http://zz563143188.iteye.com/blog/1847029http://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的多型。
架構圖

所有如果以後再遇到類似的需求,可以借用上面的架構實現。

相關文章