x、y、z、q についていくつかの仮定を立てることができますか? たとえば、そのうちの 1 つだけが真である可能性があります。あなたがそれを州として見ることができたよりも
enum State {
X{
void doSomething(){
doItTheXWay();
}
},
Y{
void doSomething(){
doItTheYWay();
}
},
Z{
void doSomething(){
doItTheZWay();
}
},
Q{
void doSomething(){
doItTheQWay();
}
};
void doSomething(){
}
}
そして、ifステートメントを使用したコードで
状態を割り当てて、正しいことを行うことができます
State state = getAState();
state.doSomething();
列挙型が気に入らない場合は、状態がインターフェイスであり、X to Q がクラスを実装している可能性があります。この場合の利点は、同じ if else 構造を複数回使用できることです。後でいくつかのコードラインを言ってください。
if(x)
do_the_next_thing_with_X();
...
または、列挙型を別の関数で拡張して、単一の呼び出しを行うこともできます
state.doTheNextThing();