软件设计-在哪里保留影响应用程序逻辑/行为的预定义值

jv2fixgn  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(178)

保留影响应用程序行为的预定义值的最佳模式/设计是什么?
例如,假设我有一个e-shop系统,每次购买都是通过调用特定的api来完成的。有不同的供应商,每个供应商都有自己的API、选项和要求,商店中的每个产品都分配了一个供应商。
提供程序可以以不同的方式存储:
在数据库中的单独表中,并通过外键在产品表中引用
在具有mysql枚举或 varchar 然后在代码中定义为常量
将数据保存在数据库中似乎是最干净的解决方案,但是,因为它会影响代码,这意味着值将在代码中硬编码。例如:

if($product->provider === "MyProviderOne") { ... }
if($product->provider === "MyProviderTwo") { ... }

// or

if($product->provider->id === 1) { ... }
if($product->provider->id === 2) { ... }

这看起来是个糟糕的设计。它也可以被定义为常量并用作

if($product->provider === Providers::MyProviderOne) { ... }
if($product->provider === Providers::MyProviderTwo) { ... }

但是有很多人反对在mysql中使用enum类型,而且维护起来也比较困难,因为代码和数据库中的数据都必须更改。我不喜欢数据库和代码之间的这种链接,它必须手动维护。由于值会影响代码中的不同逻辑,因此将值仅保留在代码中是有意义的,但是代码将成为数据的存储。
对于这种情况,最好的设计/模式是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题