用Java开发“插件系统”,目前已有两个方案,请各位帮我评估一下,谢谢!
方案一(硬编码):
在“插件参数”的表中,新增字段“config1-config20”,直接硬编码。
方案二:
每新增一个插件,都需要新建一个插件专属的MySQL表(ID - [参数1] - [参数2] - ...)
目前已知方案一的优点是,只用编写一个Java文件,不用其它Mapper和Impl;方案二的优点是,编写的时候方便,不用对照“conf1、conf2…”。
之前有人跟我说什么“高内聚低耦合”,我也不太清楚是怎么回事,希望大家能帮忙解释一下。
这个conf里面存储的是啥,建议用字典类型的表来存储,支持新增不用改表结构
不知道你这个问题是否已经解决, 如果还没有解决的话:建议选择方案二:每新增一个插件,都需要新建一个插件专属的MySQL表(ID-[参数1]-[参数2]-...)。
首先,硬编码的方式会增加代码的维护难度。将配置信息保存在数据库中,可以大大减少代码修改的频率和工作量。此外,在使用硬编码时,如果需要修改配置信息,需要重新编译和部署代码,影响稳定性和效率。
其次,每个插件都有独立的配置表,利于管理和维护。在配置信息需要大量重复时,可以通过通用配置表来实现共享。而“硬编码”方式每新增一个配置项,就需要更改数据库结构,增加字段,会不断增加表的复杂度。
“高内聚、低耦合”是一种设计原则,即模块内部各功能模块之间高度联系,而模块与模块之间联系尽可能少。
高内聚指的是模块内部各功能模块之间联系紧密,代码易于维护、可读性强、可靠性高;低耦合指的是模块间联系少,降低了模块间的互相影响和调用关系,代码灵活性高。这样可以减少模块间的依赖、提高模块维护和升级的效率。
在这个问题中,方案二符合“高内聚、低耦合”的原则,每个插件都有独立的配置表,模块内部联系紧密,而各个插件的配置信息没有与其他模块相互依赖,每个插件的配置信息之间耦合度较低。