Opendaylight 中 关于工厂设计模式的应用

好久没有写博客了,最近工作上倒不是不忙,但是在准备考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的多态。
架构图

所有如果以后再遇到类似的需求,可以借用上面的架构实现。

猜你喜欢

转载自blog.csdn.net/u011563903/article/details/53861232