メモ:ファイル出力のマイプラクティス
業務でログや実行結果をファイルを出力する系の機能を作る場合。
今まではテキストならprint文にList渡してガリガリ、XMLなら自作のDOM操作オブジェクトにXPathと値のMap渡してガリガリやっていたが、唐突にこれ良くないとか気付いた。
それはなにか、飴でも舐めてダリダリーってやってた時のような気がするし、社食に移動する途中「アーウゼエ」と思っていた時かもしれないが、とにかくこれは良くない気がした。
以下、案。
オブジェクト指向的には、たぶん既に誰かが思いついていそうなものであり、特に目新しいことはない。
Result Modelを作る。これはおそらくJSONのような何かを実データで持てるものだ。
ここに、getPropertyだとかsetPropertyみたいなものを作って、さらに階層状に参照できるようにする。
業務データはScalarやListやMapでバシバシ集まるが、それをどんどんモデルにセットしていく。
最後はresult.toXml()やreult.toText()、toJsonなどで実体化するし、toDBとかでもいいだろう。さらにObservableを付けておけば、特定の処理を実行したタイミングでその時間を記録したりとかできてハッピーそう。
で、結果ビューアーなどはResult Modelを受け取るように作って、そいつから抽象クラスModelReaderを拡張(extend)したXmlReaderやtextReaderのreader.read()でModelに変換し、ビュー部分に渡す。
あとなんか思いついたら追記。
「ついき」で変換したら「築城」って出てきたのだけど、苗字かなにか?