删除了更多原始内容以使问题更易于参考:
所以我有一个House
类有一个方法House.buy(Person p)
,导致人买房子。我想知道这个人是否有可能买房子,所以我也有一个方法House.tryBuy(Player p)
,如果这个人可以买房子,我就会返回。我有一个枚举BuyState
值,如OK
,NotEnoughMoney
和AlreadyOwned
. 有几个不同的条件需要满足,客户想知道哪个失败了。但是如果多个条件都失败了怎么办?我可以有一个层次结构,比如如果 House 已经拥有并且 Person 没有足够的钱,则 return BuyStates.AlreadyOwned
。但这只能让我告诉客户一件事。
我可以有 N 个单独的条件和一个具有 N*N 值的枚举,ConditionA_AND_ConditionB_ANDConditionC
但是由于几个原因,这根本没有意义。我知道有位域,每个条件都有一个位域,但它们看起来太低级了,实现起来很烦人,而且不可扩展。所以我需要一种从枚举中返回值列表的方法,那么这样的类怎么样:
class C<type_of_enum> {
private List<type_of_enum> values;
//etc etc
}
这是“最好”的设计吗?
(保持这个关于 java 和 C# 的问题以保持答案有效)