如何让软件插件化
软件的插件化,核心是对软件进行抽象,达到一种程度使得所有人根据你抽象的模型编写完代码后能够顺利在核心软件开发者未知情况下直接使用。
很现成的例子是我们常用的插座:
目标:提供电力
如何使用:将电缆接入插座(plug-in/plug-out)
具体实现类:满足中国国标三口插座/两口插座
我们再以Spring启动事件为例,看一下Spring是如何实现的
Spring-Context初始化时候以以下函数为重点Application.refresh()
其中Fresh消息发布地方在FinishRefresh(),
在publishEvent中就能看到到底Spring是如何将其插件化的了:
重点在于需要现在把监听的对象通过spring ioc进行管理,然后就可以简单的通过订阅者模式进行事件的的发布。
划重点:
重点在于发布一个规范让所有人进行遵守,规范越是简单,那么就越灵活,越是复杂越是只能支持特定事物。
如Spring的需要两个要求,一个是对象需要通过Spring来管理并且需要实现一个特定接口。
所以另一个问题就是,如何得到规范,那就是考验设计者心智的情景了。