Java 类,表示行为需要按行变化的表
我的标题有点夸张,这就是我要说的问题 假设我有:Java 类,表示行为需要按行变化的表,java,design-patterns,orm,oop,Java,Design Patterns,Orm,Oop,我的标题有点夸张,这就是我要说的问题 假设我有: class Bill { public String legislationID; public BillStatus currentStatus; } //and class BillStatus { public String description; } 持久化后,BillStatus对应于一个表,该表在一项立法的每个可能状态中都有一行。(例如“在众议院”、“在参议院”等) 我经常遇到的问题是: class abs
class Bill
{
public String legislationID;
public BillStatus currentStatus;
}
//and
class BillStatus
{
public String description;
}
持久化后,BillStatus对应于一个表,该表在一项立法的每个可能状态中都有一行。(例如“在众议院”、“在参议院”等)
我经常遇到的问题是:
class abstract BillStatus
{
public abstract String getDescription();
public abstract void callForVote(Bill bill);
}
一旦行为开始根据BillStatus的哪个实例附加到Bill而变化,整个事情就变得很难表示。我看到两种选择:
1) Bill中的许多交换机根据当前BillStatus执行分支行为
2) 方法,该方法接受bill作为参数,并具有根据实例标识执行不同逻辑的开关。(类似于实现公共接口的类)
这两种方法似乎都很草率。我希望能够做到的是:
class abstract BillStatus
{
public abstract String getDescription();
public abstract void callForVote(Bill bill);
}
然后:
这一定是一个常见的问题。我是不是想错了?基本上,我们的目标是封装随非原始子属性的特定值而变化的行为。是什么阻止您使用您的设计 Hibernate(通常称为JPA)能够处理继承,您可以将整个继承层次结构存储在一个表中,并使用一个鉴别器列告诉特定行使用哪个子类
有关详细信息,请参阅。另一个不太有效的解决方案:每个特定州的账单子类可能都存在。这在我的例子中不起作用,因为至少有3个类似于状态的属性会影响Bill的行为。这似乎意味着我需要bill的[count of property 1]*[count of property 2]*[count of property 3]子类。我可能应该推迟深夜的节目。谢谢