摘要: 模块的可扩展性是模块设计时需要重点考虑的非功能特性,对于框架而言,扩展性的设计则更加的重要,框架需要通过不断的扩展来充实其基础设施,构成真正的应用系统。
模块的扩展主要有两种,一种为扩充功能的扩展,另一种为覆盖性质的扩展,当然,本质上而言是可以把这两者进行合并的。
在模块的扩展上Eclipse的扩展点的设计方式无疑是支撑模块可扩展的经典设计方法,到现在为止仍然是如此,基于Eclipse的扩展点的设计无论是对于扩充功能的扩展还是覆盖性质的扩展都支持的非常好,这个经典的设计也是RCP得到那么多client side app的原因之一,尽管OSGi中并没有定义这方面的规范,但做为OSGi R4的RI的Equinox考虑到更好的支撑Bundle的扩展就引入了Eclipse的扩展点的设计,在现在的Equinox中我们仍然可以基于Eclipse的扩展点的方式来支撑模块的可扩展性。
但是否有别的方法呢?一定需要Eclipse的扩展点的方式吗?其实个人觉得基于OSGi的Service就已经天然的构成了一种可扩展的设计,为什么这么说呢?
阅读全文