倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

ちょっとリファクタリング

当初必要かと思って作成したがあまり必要なかった、ってインターフェースをチョイとリファクタリング

DataTable, DataRegistryDataManager


観測量の値を管理するインターフェースとして、DataTable, DataRegistry を作成しました。 これは、通常は値を設定できない箇所で値を設定出来ない様にするためだったんですが、継承関係などが無駄に複雑になるので、統一して DataManager というインターフェースにします:

public interface DataManager{

    ObservableSet getObservableSet(int i);
    List<ObservableSet> getObservableSets();
    void addObservableSet(ObservableSet obs);
    void removeObservableSet(ObservableSet obs);
    
    boolean contains(String name);
    Class<?> getDatatype(String name);
    List<String> getDataEntries();

    Object getData(String name) throws ObservationException;
    void setData(String name, Object value);
    void resetData();
}

ObservableSet に対するアクセッサ・メソッドも付け加えました。 禁止されている箇所での値の設定を防止するためには、例外を投げるなど、実装でナントカすることにしましょう。

これに伴って、DataAccessor インターフェースのメソッドも少し改名します:

public interface DataAccessor {

    void setDataManager(DataManager dm);
}

Device


Device インターフェースは削除します。 このインターフェースを拡張していたインターフェース はDataOutputter のみだったので、Device インターフェースに定義されていたメソッド prepare(), dispose() はこの DataOutputter インターフェースに直接定義します:

public interface DataOutputter 
        extends DataAccessor, ComponentAccessor{
    
    List<String> getEntries();
    void addEntry(String entry);
    void removeEntry(String entry);
    
    Set<OutputTiming> getOutputTimings();
    void addOutputTiming(OutputTiming timing);
    void removeOutputTiming(OutputTiming timing);
    void setOutputTiming(String s);

    void prepare()throws SimulationException;
    void prepareForIteration()throws SimulationException;

    void output()throws SimulationException;

    void disposeForIteration()throws SimulationException;
    void dispose()throws SimulationException;
}

prepareForIteration(), disposeForIteration() メソッドを新たに定義しています。 これらについては後日。