2004-02-27(Fri) [Edit]
■1 「Oh No! DTO!」——オブジェクトとデータ構造
「データストラクチャだろうがなんだろーが、other.val = 1 って変えられるってのは問題じゃね?」とあるけれど、私が理解したつもりのところでは:
- オブジェクト指向プログラムには2種類のエンティティが存在する
- それはオブジェクトとデータ構造*1だ
- データ構造には振る舞いがない。振る舞いが無いんだからメソッドも無い
なるほどDTOはクラスでありインスタンスではあるけれど、その本質として単なるデータ構造(従来の構造体とかレコード型、と考えていいのかな)でしかない。となれば、そこにあるのはフィールドだけじゃん。JavaBeans? フーン。ってことかな、と。言い方を変えるならば「DTOはJavaBeansかね?」ということかも。
DTOの仕事は「Layer間のデータを受け渡し」なのだから、送信元の層の端でオブジェクトからDTOへ必要なデータをセット、受信元の層の端ではオブジェクトがDTOからgetするんじゃないのかなあ。その後の処理はオブジェクトを通しておこなわれる、と。勿論オブジェクトには振る舞いがあるし、フィールドはカプセル化される、と。
観点を変えると、フィールド直接アクセスによって「ああこいつはデータ構造なんだな」とひと目でわかるというメリットがあるかもしれない(ここに振る舞いを持たせてはいけない!!)。
——Data Transfer Object(401)を読まずに脊髄反射で書いてしまった。電波飛ばしてしまったか。401頁から読もう……。
*1 といっても、思いつくのはDTOか他システムへのexport/からのimportぐらいだけど……
2010-02-27(Sat) [Edit]
■1 息子の生活発表会
近所のコミュニティセンターで。可動式客席で100人ぐらい入るなかなかきれいなステージで「ここでRegional RubyKaigiやってもいいよなー」と思った(ただし客先の電源が心配)。息子は割り当てられた仕事をちゃんとこなしていた。