例えばスーファミのFFみたいな、古典的なRPGの戦闘シーンを作っていて、「勇者がモンスターを攻撃する」。 勇者.attack(モンスター); という設計だったとする。 これに「モンスターが毒を受けて、自死する」という挙動を追加するケースを考える。 毒.attack(モンスター); やや複雑な変更になりそうだが、勇者の攻撃とのタイミングの差で、 攻撃しようとしたときに、モンスターが毒で既に死んでいた場合、勇者は振り上げた剣を納刀する 毒を受けているモンスターが勇者の攻撃(斬撃)で死んだら、毒に侵されて変色した血が飛び散るのようになるとしよう。 さて、変更する箇所は...まず、インターフェイス"攻撃者"をつくって、「勇者」、「毒」をその実装とする。加えて... Model勇者への変更:斬撃後に死んでいた場合(*) 、納刀する 入力Controllerへの変更: 攻撃前に既に死んでいた場合、攻撃