オートマトンでいくつかの操作を実行するプログラムを開発しています。オートマトンは状態 (別名ノード) と遷移 (別名エッジ) で構成されており、特定のプロパティを持つセットを取得するには、それらをフィルター処理する必要があります。この操作は簡単に実装できますが、数回実行されるため、小さなキャッシュを書き込みます。
以下のコードの断片には私の実装があり、監視可能な遷移をフィルタリングしてメモ化する正しい方法であるかどうかを知りたいです。
public class Automata {
private State initial;
private Set <State> states;
private Set <Transition> transitions;
private Supplier <Set <Transition>> observables;
// ...
public Automata() {
this.initial = new State();
this.states = new HashSet <> ();
this.transitions = new HashSet <> ();
this.observables = Suppliers.memoize(() ->
transitions.stream().filter((t) ->
(t.isObservable() == true)).collect(Collectors.toSet()));
}
public getObservables() {
return observables.get();
}
}
質問:
- それが正しいか?
- 遷移が可観測性を変更した場合、この情報はサプライヤーにも伝播しますか?
英語が下手で申し訳ありませんが、十分に明確であることを願っています。