タグ

delegationに関するsh19eのブックマーク (2)

  • クラスの「継承」より「合成」がよい理由とは?ゲーム開発におけるコードのフレキシビリティと可読性の向上 | POSTD

    コード構造における重要な問題として、複数のクラスを共有する場合に合成と継承のどちらを用いるかという点があります。“has a”の関係と、“is a”の関係と言われる2つの対比です。例えば、“ソファには綿が入っている”と、“ソファは家具である”という違いのようなものです。この例では2つの違いは非常に明白ですが、実際には、“has a”の関係でも“is a”の関係でも意味を成すケースがたくさんあります。ゲームのキャラクターについて、これはコリジョンボックスを持っているかと聞くのと、これは衝突可能なオブジェクトかと聞くような場合です。この2つは全く同じことではありませんが、それぞれが(または両方一緒に)衝突を処理する主構造として用いられ、どちらの方がよいかは必ずしも明白ではありません。私の経験では、直感的には継承の方がよいと思うことも多いのですが、それだと問題がたくさんあって結局は合成の方がよか

    クラスの「継承」より「合成」がよい理由とは?ゲーム開発におけるコードのフレキシビリティと可読性の向上 | POSTD
  • 【Ruby】接客と委譲 - 旧gaaamiiのブログ

    (さらに追記)不十分なところを指摘していただきました!ありがとうございます! nomnel.net (追記)オープンクラスの理解が間違っていたためタイトルを変更しました。今回あげている例はNoMethodErrorを起こさずに他のオブジェクトに処理を委譲する流れを説明したものです。 パーフェクトRubyの7章で、存在しないメソッドを呼び出したときにNoMethodErrorを発生させる代わりに他のオブジェクトに処理を任せる、という内容の節がありました。これを接客業に当てはめて説明してみたくなったので、ブログ記事にしています。 接客でやってはいけないこと 派遣バイトとしてコンサート会場などの案内スタッフになると、業務前にほぼ必ず以下のような説明を受けます。 みなさんは日、◯◯(イベント会社)のスタッフです。そのためお客様に対して「わからない」と言ってはいけません。必ず、「お待ちください」と

    【Ruby】接客と委譲 - 旧gaaamiiのブログ
  • 1