«前の日記(2004-02-26(Thu)) 最新 次の日記(2004-02-28(Sat))» 編集
RSS feed
Webサイトとは「つい、うっかりの存在論」である

角谷HTML化計画

「むずかしく考えることはない」と、偉そうに葉巻を振りまわしながら、トレヴィラヌスはいった。「ガリラヤの太守がじつにみごとなサファイアを持っていることは、みんなが知っている。何者かがそれを盗むつもりで、間違ってここへ入ったんだ。ヤルモリンスキーが起きていたので、泥棒は殺さざるをえなかった。どうだね、これで?」
「そのとおりかもしれません。しかし、おもしろくはないですね」と、レンロットは答えた。
J.L.ボルヘス『死とコンパス』(『伝奇集』収録)

2004-02-27(Fri) [長年日記]

■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ぐらいだけど……


«前の日記(2004-02-26(Thu)) 最新 次の日記(2004-02-28(Sat))» 編集
RSS feed