Avatar
ワイのイメージ ビュー: はえー、ビューを更新する大変や。リクエストしてモデルさんから帰ってくるデータがたくさん来るからな。いそがしいそがし モデル: … なあ、相談したいことあるんやけど。 ビュー: なんやモデルさん。なんかあった? モデル: せや、ワイ、ビューを直接変えたいねん。 ビュー:ファッ?それはなんでや モデル:お前の意図とは関係なく、データAが来るんや。仕様やと、ビューにそのデータAを表示せんといかんねん ビュー:ファッ、それってワイをメンバ変数としてモデルさんのところに定義せんといかんやん。密結合や!ワイがリクエストした時に表示すればええんちゃう? モデル:… やけど、仕様やからな。お前がリクエストしたのと全然関係ないねん。 ビュー:ファーッ。それきついわ。相互につっよい依存関係できてしまうわ。モデルさんに対して全部アクセス権を与えたくないねん。 モデル:うーん。どうすればいいやろ ビュー:。。。せや!ワイに処理を”移譲(デリゲート)”してくれ。デリゲートしてくれたら、ワイを直接もたんでええやん。 モデル:それはどういうことや ビュー:あくまで、ワイを「データAが来たときにデータAを投げる先」として捉えるようにデリゲートProtocolを作って定義やれば、ワイを強い実体として持たなくてええんや。わいはそのProtocolに準拠すればええ。それでワイがデータAだけを受け取ってワイが更新すればええんや モデル:それって変数として持つのとどう違うん? ビュー:まず、モデルさんがビューという強い実体を持つのはダメなんや。やからデリゲートを通じるようにするだけにして「データを投げるなにか」として抽象化できるんやで。 モデル:ということはあれか。わいはおまえをビューとして知らんでええやん。「ただデータを投げる先」やな ビュー:せや!これでビュー -> モデルの関係はあるけど、逆は「ビュー」としての依存ではなく、「何かデータAを投げる先」として扱えるんや (edited)
😆 1