ほうほう、ぷろじぇくつのコード見ているとすごく勉強になる!
オブジェクト指向(Abstract methodとInterfaceとポリモーフィズム)を上手く使ってんなー!と。
うほほーい
オレもJavaの話にまざりたーい!
せんぱーい!したい!
要件
10個ぐらいあるbeanからcsvファイルを出力しろよ
takuanの頭の中
- bean事にフィールド違うわけだから、最近見たリフレクションをパクってクラスごとに処理を振り分ければいいんだろ
- 各beanごとのcsv化メソッドは作らないといけないな…
- インパラの型はobjectにすればいいかな
- CsvUtils#write(File file, List
ぷろじぇくつのコード
- beanに一つインターフェース噛ます(抽象クラス噛ますんだったかな?)
- abstract String toCsvString()を持ってる
- 実装するbeanクラスは、String toCsvString()メソッドを実装する
- CsvUtils#write(File file, List bean); 的なの
- 実際引数のbeanに設定されるのは、CsvBeanを実装した各10ぐらいのBean
- 拡張forでList bean;を回して、toCsvStringをコールする
- StringBufferとかに貯める
- 最後にファイル出力
- toCsvStringをabstract methodにすることで、実装を強制する
これがキモっすね。
- csv出力機能を付けたいbeanクラスは、CsvBeanを実装する事。
- CsvUtils#write()はCsvBeanを実装したクラスを引数で取ること。
す、、すごい…
確かにJavaプログラマ様からしてみれば、こんなの朝飯前だろうが、こんなスマートに実装してしまうなんて…
僕は尊敬してしまいそうだよ!
# 今年度から2年目のJavaプログラマはホントまだまだっすね。。。
い、、いや、、まぁ僕もやろうと思えばお、、思いつきますよ、、(ビクビク
でも
オレだってレビューを繰り返して、リファクタリングを繰り返して、よく考えてコードを書けばこんぐらい…。
と思うけど、その人達はそれをすでに実践していて、実践済みなので一発でこういうコードを書き出せたりするのかなー。
そしてそういう概念をもうみにつけているから、他にも似たような要件があった時、同じアイデアで実装できるんだろうなー。
とか思うと、全然勉強不足だなーと思い、でも今回コード見て普通に理解できたし、このワザ盗めそうだし、今後の手札にしよー
もっと自分の糧になるぐらいまで強烈に頭に残したいけどなー
とりまメモって、いつか使うとき参照しますわ