关于同一实体不同扩展属性的设计

Blade 未结 1 458
bluerose
bluerose 2022-10-19 20:08

目前我们基于blade做一个设备管理系统。由于不同的设备类型具有不同的扩展属性,所以我们在表结构上,我们是按

一张主表,多张扩展表来设计的。这样应该是没问题。

但是我们在考虑api设计时,有点不太确定哪个方案好。我们想把新增、修改由统一1个api来承载,后端根据设备类型保存对应的属性到对应的表。

另外在列表查询时,我们也通过一个api来承载,我们在vo里新增了一个ext扩展属性,用以承载不同的设备类型的属性值JSON字符串。另外,我们也把ext当作设备的属性进行了缓存。


想请问这样统一的设计方式如何。是否应该根据不同的设备类型拆分api呢?谢谢

1条回答
  •  admin
    admin (楼主)
    2022-10-23 23:39

    这个思路没错的,如果设备不多,就不用改动。

    如果设备很多,那统一api就会有很多判断,代码会很长并且不够优雅。

    这种情况需要考虑解耦了,简单点就用工厂模式来做,统一一个Interface类,作为设备api的通用api,另外传参到统一api,把参数传递到工厂类,工厂类初始化后进行执行,然后返回对应的拓展vo。

    这样的好处就是统一api显得很简洁,整个业务模块也不会臃肿,横向拓展非常方便,也好后期做统一改动。

    0 讨论(0)
提交回复