Skip to content
Siloe Bezerra Bispo edited this page Jul 4, 2014 · 13 revisions

Welcome to the SpaceInvaders wiki!

Padrões aplicados no Projeto:

  • Arquiteturais: Observer; MVC;
  • Criacionais: FactoryMethod; SingleTon;
  • Estruturais: Flyweight, Adapter;
  • Comportamentais: GameLooping; UpdateMethod; Iterator;

Os locais aplicadose informações extras:

Observer: O padrão "Observer" tem os seus "Listeners" e "Events" dentro do pacote "listenners" e com as implementações em classes do pacote "gameobjects" como "Nave" e "Inimigo" onde se inscrevem para ouvir e também disparam para ouvintes.

MVC: o padrão "MVC" é divido no código em:

  • Model: As classes que são filhas de GameObject (Ex: "Nave", "InimigoRosinha", "TiroInimigo") representam os dados.
  • View: Quando alguém precisa ser imprimível na tela precisará assinar a "interface" "Printable" como as classes "Sprite" e suas classes filhas, "Background" e suas classes filhas e a classe "Texto" e se inscreverem na lista do "Controller".
  • Controller: A classe Jogo faz o papel intermediário de mandar as entradas e disparar os eventos de comando para o View e/ou o Model.

FactoryMethod: Existem duas implementações deste padrão nas classes "InimigoFactory" e "TiroFactory".

SingleTon: A classe "Resolucao" é utilizada como uma implementação do "SingleTon".

Flyweight: Nas "Factorys", citadas acima, fazemos o reuso das imagens sem a necessidade de carrega-las sempre que for instanciado um dos inimigo e/ou tiros inimigos. As imagens reutilizadas são os vetores de "BufferedImage" em "InimigoFactory" e "TiroFactory".

Adapter: O padrão "Adapter" é implementado na classe "BackgroundImage" que é um Background que faz o encapsulamento de S"prite", a necessidade é pelo motivo da classe se comportar como um "Sprite" porém é necessário que seja filha de "Background" para que seja renderizado de forma prioritária.

GameLooping: O padrão "GameLooping" é encontrado na classe "Jogo", especificamente no método "startGame", ele tem o objetivo de fazer as atualizações no jogo e ordenar a renderização dentro do "Frame per Seconds" determinado.

UpdateMethod: Este padrão define que cada elemento no jogo possuam um método "update" que será chamado de por um "GameLooping" para que haja a atualização de cada objeto no jogo. No projeto existe a classe "GameObject" onde cada elemento do jogo é filha desta classe, como por exemplo as classes "Nave", "Inimigo" e "Tiro" e até mesmo elementos não visíveis como a classe "Parede" que está nas extremidades da tela.

Iterator: Este padrão foi implementado não foi utilizado a implementação contida no próprio JAVA, no projeto possui a interface "Iterator" tendo como assinante a classe "ColisaoIterator", e na classe "Colisao" no metódo "verificarColisao" a parte de iteração da implementação.

That's All Folk! :)

Clone this wiki locally