【发布时间】:2013-10-28 07:28:28
【问题描述】:
假设我有一个user (id, name, user_type, address, access_level, and_so_on) 的实体
这里有两个属性很重要,user_type 和 access_level。我们知道 user_type 和 access_level 字段中会有一个固定值,但是很难记住 1 ,2 或 3 的含义,因此我们为这些值创建常量以通过名称访问它们。比如如果 user_type 值为 1,它是一个普通用户,2 表示 CSV 用户,3 表示管理员用户,4 表示 root 用户。
通常我在同一个实体 Bean 类中定义这些常量,该实体 Bean 类包含将此值保存在数据库(或任何地方)中的字段。
public UserBean implements IBean {
...
/**
* constant for user type
*/
public static final int USER_TYPE_NORMAL = 1;
public static final int USER_TYPE_CSV = 2;
public static final int USER_TYPE_ADMIN = 3;
public static final int USER_TYPE_ROOT = 4;
/**
* constant for Access level
*/
public static final int ACCESS_LEVEL_SILVER = 1;
public static final int ACCESS_LEVEL_GOLD = 2;
public static final int ACCESS_LEVEL_DIMOND = 3;
...
}
所以我的问题是,定义它们的最佳位置(以及为什么)是什么? (我能想到,但你可以定义任何方法)
- 在与上述相同的类别中。我这样做是因为,我不需要记住任何其他内容,因为如果我知道它的用户,那么它的相关信息可以在
UserBean类中找到,自动实体生成器工具可能会覆盖它们)。 - 创建一个包含所有与用户相关的常量的新类,该常量类的名称应该是什么(易于记忆/或猜测)?
- 为每种类型的常量创建 2 个单独的类(更多依赖项)?
【问题讨论】:
-
IMO, Enums 似乎适合您的情况(命名可能类似于
UserTypeEnum、AccessLevelEnum等)。
标签: java class design-patterns entity constants