>>590で

> WalkのコンテクストではDogを主語として扱うことに意味はあるのかもしれない。
> しかしFightのコンテクストではDogあるいはCatを主語として扱うことに対する深い意味はないだろう。

こんなこと言ったのに、↓主語として扱う意味を見つけてしまったなぁw

> もっとも、Fighterがwizのように何人も生成できて、キャラクター生成の度に、monsterknowledgeを初期化して生成する
> っていうのはいかにもオブジェクトらしいけどな


結局オブジェクト指向としての設計の話をするならば、これのほうが正しいんだよ。
> Dog.Fight(Cat);
> Cat.Fight(Dog);

ただし設計とは別の観点、つまり「メンテナンス性のために戦うアルゴリズムだけを分離したい」となれば、
それは、アルゴリズムだけを収録したクラスを作って(あれ?将棋でも同じ話しなかったっけ?w)
それを入れ替えられるようにすればいい。それは上記の設計を変えずにできる。
設計は正しいままで、アルゴリズムを呼び出すようにする。