假设我的应用程序中有一组国家/地区.我希望这些数据能够改变,但不是经常发生.换句话说,我不会将此集视为操作数据(例如,我不会为Country提供CRUD操作).
那说我必须在某个地方存储这些数据.我看到两种方法:
>数据库驱动.创建并填充Country表.提供某种DAO来访问它(findById()?).这样,客户端代码必须知道国家/地区的ID(也可以是名称或ISO代码).在申请方面,我将有一个国家级.
>应用驱动.创建一个枚举,我可以列出我系统已知的所有国家/地区.它也将存储在DB中,但区别在于现在客户端代码不必具有查找方法(findById,findByName等)和硬编码ID,名称或ISO代码.它将直接引用特定国家.
我倾向于第二种解决方案有几个原因.你怎么做到这一点?
这个’字典数据’是否正确?
附录:这里的一个主要问题是,如果我有一个像findByName(“捷克斯洛伐克”)这样的查找方法,那么在1992年之后,这将不会返回任何内容.我不知道客户端代码将如何对它作出反应(毕竟sorta期望总是让国家回来,因为,好吧,它是一个字典数据).如果我有像findById(ID_CZ)这样的东西会变得更糟.找到所有这些依赖关系真的很难.
如果我要从我的枚举中删除Country.Czechoslovakia,我将强迫自己照顾对捷克斯洛伐克的任何依赖.
解决方法:
这对你没有帮助,但这取决于……
你打算和这些国家做什么?
您是否将它们存储在数据库中的其他表中?如果添加新国家/其他应用程序是否可以访问这些数据,现有数据会发生什么?
– 你打算用几种语言翻译contry名字吗?
– 您的应用程序的业务逻辑是否取决于所选择的国家/地区?
– 你需要国家课吗?
等等…
如果没有更多的信息,我会从一个包含几个国家的Enum开始,并根据我的需要进行重构……
标签:java,enums,dictionary
来源: https://codeday.me/bug/20190527/1160912.html