Padrões de Projeto

Olá pessoa, estou tentando implementar em Java o jogo Batalha Naval. Devo utlizar alguns padrões de projeto nesse projeto. Estou estudando alguns padrões mas em alguns momentos não consigo destinguir onde aplicar um ou outro, as vezes penso que cabe até dois padrões para o mesmo problema. Segue algumas especificação do projeto:

  • Permitir mais de uma regra de jogo;
  • Permitir jogos: Humano X Humano; Humano X Máquina; Máquina X Máquina
  • Máquinas jogando com ela mesma deve utilizar, de preferência, inteligências diferentes;
  • Interface modo caracter (model view)
  • O sistema deve permitir mudança / evolução do código. Por exemplo: Alterar o tamanho do barco; aumentar qtd de barco; alterar o tamanho do tabuleiro; criação de GUI; permitir rodar em um servidor com clientes remotos;

Quais Padrões de Projeto aplicar para estas regras? Alguém pode me ajudar?

Grato!!!

Para variar comportamentos, estude sobre o padrão Strategy. Para a IA, estude também o State.

O que você descreveu parece que se aplica MVC, Strategy, State, Proxy. Talvez Memento, Flyweight, Observer, ServiceLocator, BusinessDelegate, Singleton, NullObject e alguns tipos de Factory podem acabar aparecendo também dependendo de como você decidir implementar.

Apenas faço umas observações importantes:

  1. Muitas vezes existe mais do que um padrão de projeto que serve.
  2. Em muitos casos, padrões de projeto são combinados para resolver-se um dado problema (ex: Proxy para um Strategy).

E nunca se esqueça disso:
Padrões de projeto devem ser soluções para determinados problemas que você tem, nunca devem ser soluções para problemas que você não tem, e muito menos soluções sem problema para resolver.