• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:[[:t/永続化]] [[:t/実装]]

***FlyweightFactory [#j900c9cb]
キーを返すメソッドと、キーが必要なメソッドがある。

ファイルを扱うのでFlyweightパターン。
†[[http://www.ie.u-ryukyu.ac.jp/~e085739/java.it.11.html]]

-.Fetch(Keys) => Objects | Null
キーが必要。
呼び出してからロックを取得するので、要求したオブジェクトが消えている場合がある。
-.Store(Key, Object) => Key | Null
キーが必要。
保存できていたらそのキー/さもなくば「保存できなかった」という何かを返す。
†[[シリアライズが必要]]
-.Search(path:String = "", label_value_pairs:Dictionary = {}, extensions:Strings = {}) => Key
キーを生成。
いろいろ指定 → 適合するキー(複数)
いろいろとは…キーの一部 または永続化クラスが特別視する部分…例えばクラス名とか。
存在するキーになるよう補完して返す。何も指定されないと存在する全てのキーを返す。
-%%.ValidateKeys(Keys) => ValidKeys%%
%%キー(複数) → 使えるキー(複数)%%
%%永続化クラス内部で使われるので、呼び出し側が使う必要は無い。%%
%%Storeせずに使えるキーを得るために。%%
→Key.New()でいい。
***Key [#x7c759e3]
実装では”FlyweightKey”のような名前にして。
-.New(String) => Key
キーを生成。
-.New(path:String = "", label_value_pairs:Dictionary = {}, extensions:Strings = {}) => Key
キーを生成。
Searchと同じ引数。こちらは存在しないキーを生成して返す。何も指定しないときは完全におまかせ。
***例えば… [#d135b5b2]
Search→Fetch
Key.New→Store
組み合わせて使う。