单体软件的复杂度达到一定阶段,插件化是必然的结果导向。

非常优雅,可以很好的解构业务之间的关联性。以及提供高 可扩展、可复用的方案。


然后我们还需要处理一下插件的一些问题,因为插件的更新和软件的更新并不同步。也就是我们需要一个管理插件的页面。提供简单的安装,更新和删除。

做到这一步的软件基本就是比较少见了。

对于大型软件,插件往往会有一个插件市场,用户可以自己上传、搜索、下载对映的插件。

但这是不好实现的。


由于插件和主软件的分离,最致命的问题是兼容性的问题。

软件的更新可能会导致插件不兼容,而不兼容的插件有可能造成软件无法打开,软件无法打开也就无法去禁用和删除插件。死循环。

不是什么大事,但对于没有经验的人而言,相当于电脑蓝屏,属于严重BUG。

插件系统的设计,的确是需要经验的。但经验又需要不断的迭代试错。

从可用,到一个相对完善的实现之间的距离还是差很多。

反复的迭代,的确会让设计更完善,但每次的变更都会带来可能造成的不兼容问题。


复杂度也不能太高,什么都往里面扔,从设计的角度来看是很失败的,过于复杂,会增加开发者的负担。

如果接入的逻辑为了完美做的很复杂,那么最后的结果就是别人宁愿另做一套,也不愿意做接入的工作。

如果一开始做的不复杂,接入容易,万一有机会做起来,那么原来的设计就成了一坨屎山。


也就是代码设计最重要的工作,并非是完成设计的工作。

而是提前预知到这套系统未来的极限工况,基于成本考量压缩在合理的范畴。