¿Cuál sería el mejor enfoque al diseñar las siguientes clases aplicando patrones de diseño?OOP Design for Card Game Classes
- cubierta-addCard, trato, shuffle, getTopCard, removeTopCard, removeAllCards
- mano-addCard, eliminarCarta, getCard, removeAllCards
- DiscardPile-addCard, getTopCard , eliminarTopCard, eliminar TodasCartas
- MeldPile-addCard, removeAllCards
(El MeldPile tiene todos los melds en la mesa.)
Para mí, creo que el getTopCard
y removeTopCard
son sólo un envoltorio de getCard
y removeCard
, como simplemente obtiene la posición superior de una tarjeta y luego la pasa a getCard
o removeCard
.
¿Debo usar composición? patrón de estrategia? o simplemente crea otra clase llamada CardPile y úsala como la clase base de la clase anterior? Realmente aprecio si pudieras proporcionar un código de muestra sobre esto.
El mejor enfoque es simplemente comenzar a escribir el reglas del juego y deja que tu diseño evolucione de forma natural. Si tiene una pregunta específica, p. "Estoy tratando de implementar una regla en la que si un jugador juega una carta la otra jugada debe descartarse, ¿qué patrón debo usar aquí?" eso podría ser responsable. –
+1 para "dejar que su diseño evolucione de forma natural" – radarbob
Tenga cuidado al delegar las clases de "origen natural" en las clases base de partículas subatómicas. Las jerarquías de clases pueden llegar a ser demasiado profundas con el procesamiento innecesario genérico y gratuito. Siempre puede refactorizarse más adelante si su * evolución de diseño natural * requiere una base más general a partir de la cual derivar una nueva funcionalidad. – radarbob