クラス Synapse の状態を象徴する enum SynapseState を作成できます。列挙型に状態情報を埋め込む利点は、switch ステートメントで使用できることです。Synapse の状態に関連する不変の情報は、抽象メソッドを使用して列挙型に含めることができます。質問のサンプルコードから取得できる情報から私が行ったことを以下の例で確認してください
enum SynapseState {
CONNECTED(0) {
@Override
List<StateParameter> getStateParameters() {
return null;
}
}, ACTIVE(1) {
@Override
List<StateParameter> getStateParameters() {
return null;
}
}, PREVIOUS_ACTIVE(2) {
@Override
List<StateParameter> getStateParameters() {
return null;
}
};
private int value;
private SynapseState(int value) {
this.value = value;
}
abstract List<StateParameter> getStateParameters();
};
class SynapseMachine{
List<Synapse> connectedSynapses;
List<Synapse> activeSynapses;
List<Synapse> previousActiveSynapses;
List<Synapse> synapses;
public void addSynapse(Synapse synapse)
{
Synapse newSynapse = new Synapse(synapse.getInputCell());
this.synapses.add(newSynapse);
switch(synapse.getState()){
case CONNECTED:
this.connectedSynapses.add(newSynapse);
break;
case ACTIVE:
this.activeSynapses.add(newSynapse);
break;
case PREVIOUS_ACTIVE:
this.previousActiveSynapses.add(newSynapse);
break;
default:
throw new IllegalStateException();
}
}
}
class Synapse{
public Synapse(Object o){}
SynapseState getState(){
// TODO Auto-generated method stub
return null;
}
public Object getInputCell() {
// TODO Auto-generated method stub
return null;
}
}
class StateParameter{
}