Es un problema básico de despacho múltiple. Desafortunadamente, la mayoría de los idiomas no admiten envíos múltiples.
Así que probablemente usaría un mapa de mapas. El mapa externo asigna ataques a mapas de defensas, que a su vez mapean defensas a puntajes/efectos/lo que sea.
Puede usar el patrón Visitor, pero eso se vuelve engorroso rápidamente.
En Python, suponiendo que no está utilizando mucha subclasificación (por ejemplo, no hay subclases de Ice), puede utilizar un diccionario de mapeo (attack,defense)
tuplas para calificar. Esa sería una solución bastante limpia y sería compatible con una variedad de idiomas (todo lo que necesita es una clase Pair y la capacidad de representar tipos de ataque como objetos, ya sea a través de un objeto de clase o algo así como una enumeración).
ooohhhh, mis ojos .. – Roman
¿Puedes hacerlo no tan brillante, por favor? – Roman
¿De verdad necesitan ser clases? ¿Puedes usar tipos enumerados? No tengo suficiente información para asegurarme de darle una buena respuesta. ¿Podría explicar un poco más lo que está tratando de lograr? – senfo