Как вы кодируете особые случаи для объектов?
Например, допустим, я кодирую RPG - существует N = 5 классов. В матрице есть N ^ 2 отношений, которые определяют, может ли персонаж A атаковать (или использовать способность M на) персонажа B (пока игнорируя другие факторы).
Как бы я закодировал это в ООП, не помещая специальные случаи повсюду?
Еще один способ выразить это, у меня есть кое-что, может быть,
ClassA CharacterA;
ClassB CharacterB;
if ( CharacterA can do things to CharacterB )
Я не уверен, что происходит внутри этого оператора if, скорее это будет
if ( CharacterA.CanDo( CharacterB ) )
или метакласс
if ( Board.CanDo( CharacterA, CharacterB ) )
когда функция CanDo должна зависеть от ClassA и ClassB или атрибуты / модификаторы с ClassA / ClassB?