質問を参照しやすくするために削除された元のコンテンツの多く:
そのHouse
ため、メソッドを持つクラスがあり、House.buy(Person p)
その人に家を購入させます。Person が House を購入できるかどうかを知りたいのでHouse.tryBuy(Player p)
、Person が家を購入できるかどうかを返すメソッドもあります。、、、などのBuyState
値を持つ列挙型があります。満たすべきいくつかの異なる条件があり、クライアントはどれが失敗したかを知りたがっています。しかし、複数の条件が失敗した場合はどうなるでしょうか? House がすでに所有されていて、 Person が十分なお金を持っていない場合のように、階層を持つこともできます。しかし、これでクライアントに言えることは 1 つだけです。OK
NotEnoughMoney
AlreadyOwned
BuyStates.AlreadyOwned
N 個の個別の条件と N*N 値を持つ列挙型を使用できますがConditionA_AND_ConditionB_ANDConditionC
、いくつかの理由でまったく意味がありません。条件ごとにビットフィールドがあることは知っていますが、それらはあまりにも低レベルで、実装するのが面倒で、スケーラブルではないようです。したがって、列挙型から値のリストを返す方法が必要です。では、次のようなクラスはどうでしょうか。
class C<type_of_enum> {
private List<type_of_enum> values;
//etc etc
}
これは可能な限り「最高の」設計ですか?
(回答を有効に保つために、Java AND C#に関するこの質問を維持してください)