根据做出的决定,我有不同的原因。我基本上有3个类别,Approved Group
,Suppressed Group
和Rejection Group
。我的Rejection Group
分为两个 - Block
和Action
。对此进行建模的最佳方法是什么?
我将把一个决定的类型存储在一个类中。
public class A{
//some Members
DecisionGroup decision
}
我将获得List<ClassA>
并将要求将其拆分为4个列表,每个列表对应不同的类型。我想考虑使用枚举,但我不确定如何将拒绝分组分成两部分。
答案 0 :(得分:3)
enum Category {
Approved, Suppressed, Rejected;
enum Group {
ApprovedGroup(Category.Approved),
SuppressedGroup(Category.Suppressed),
BlockRejectedGroup(Category.Rejected),
ActionRejectedGroup(Category.Rejected);
Group( Category category ){...}
Category getCategory(){...}
}
枚举可以有属性,因此您可以定义4个组,并将“主要”类别作为定义列表的参数。
或者您甚至可以将List本身作为枚举组的属性。
或者,编写一个枚举类别,其中包含确定定义列表的组的方法。
enum Category {
Approved {
@Override
public Group select(A a) {
return Group.ApprovedGroup;
}
},
Suppressed {
@Override
public Group select(A a) {
return Group.SuppressedGroup;
}
},
Rejected {
@Override
public Group select(A a) {
...
return Group.BlockRejectedGroup;
...
return Group.ActionRejectedGroup;
}
};
public abstract Group select(A a);
}
答案 1 :(得分:2)
如果您的结构比枚举更复杂,请考虑编写自己的类。不要忘记覆盖equals / hashcode以确保两个相同的决策是“相等的”。