Padrões de projetos para jogos 
● Alunos : Robson Cavalcante de Negreiros 
Lucas Sales Vieira 
● Prof° responsável : Camilo Camilo Almendra
O que é um padrão de projeto 
● É uma solução geral reutilizável para um problema que 
ocorre com frequência dentro de um determinado contexto 
no projeto de software.
Categorias segundo (GoF) 
● Padrões de criação:relacionado a instanciação de 
objetos. 
● Padrões de estrutura: tratam das ações entre classe e 
objetos, como são construídos para formar estruturas 
maiores. 
● Padrões de comportamento: tratam das interações e 
divisões entre classes e objetos, ou seja, dos algoritmos e 
atribuições de responsabilidades entre objetos com foco 
na comunicação entre os mesmos.
Alguns dos padrões mais utilizados em 
jogos 
● Builder 
● State 
● Command 
● Memento 
● Mediator 
● Observer
Padrão Builder 
● Separar a construção de um objeto complexo da sua 
representação, de modo que o mesmo processo de 
construção possa criar diferentes representações.
Diagrama Classe : Builder
● Builder : 
É a Interface Abstrata para a criação das partes de um objeto. 
● ConcreteBuilder : 
Constroe e monta as partes do objeto pela implementação da 
interface Builder. 
Fornece a interface para recuperar o produto. 
● Director : 
Constroe o objeto de acordo com Builder que recebeu. 
● Product : 
Representa o objeto complexo em construção
Exemplo código
Exemplo código
Exemplo código
Desvantagens do Padrão Builder 
● Um problema com o padrão é que é preciso sempre 
chamar o método de construção para depois utilizar o 
produto em si.
Padrão State 
● Ele permite um objeto alterar seu comportamento quando 
o seu estado interno muda. Esta mudança é significativa e 
visível para o usuário, assemelhando-se a troca de classe.
Quando Usar o padrão State 
● O comportamento de um objeto depende do seu estado e 
ele deve mudar o seu comportamento em tempo de 
execução dependendo do estado. 
● Os métodos têm grandes instruções condicionais em que 
as condições dependem do estado do objeto.
Aplicabilidade : State 
● Quando uma classe desempenha vários comportamentos 
● Quando classes relacionadas forem diferentes apenas no 
comportamento
Vantagens : State 
● Faz as mudanças de estado explícitas. 
● Os objetos Estado podem ser compartilhados se eles não 
contêm variáveis d e instância. 
● Permite a um objeto alterar de classe em tempo de 
execução dado que ao modificar suas responsabilidades 
pela de outro objeto de outra classe, a herança e 
responsabilidades do primeiro mudaram pelas do 
segundo.
Exemplo código
Exemplo código
Exemplo código
Desvantagem : State 
● Aumenta o número de subclasses
Padrão Command 
● O padrão de projeto (Design Pattern) Command é um 
padrão comportamental cuja intenção é encapsular uma 
solicitação como um objeto e desta forma permitir que 
você parametrize clientes com diferentes solicitações, 
enfileire ou registre(log) solicitações e suporte operações 
que podem ser desfeitas.(GoF)
Diagrama Classe: Command
Command 
● Comando: É a classe abstrata ou interface para a executar 
a operação, ela é a base para todo objeto Comando. 
● ComandoConcreto: Implementa a operação executar() e 
possui a relação com o Receptor para executar a ação 
usando o mesmo a ela vinculado. 
● Client : Cria o ComandoConcreto e atribui a vinculação 
com o seu Receptor correspondente. 
● Receptor : Conhece como executar as operações 
associadas com a execução do comando.
Aplicabilidade Command 
● Queremos parametrizar objetos por uma ação a ser 
executada; 
● Queremos especificar, enfileirar e executar solicitações 
em tempos diferentes; 
● Queremos dar suporte para desfazer operações; 
● Estruturar um sistema em torno de operações de alto 
nível, como transações por exemplo; 
● Reduzir acoplamento entre as requisições dos clientes 
e o objetos que as executam; 
● Para facilitar a implantação de novas operações e 
tornar mais simples a manutenção das operações.
Vantagens Command 
● O padrão Command desacopla o objeto que invoca a 
operação daquele que sabe como executá-la; 
● O padrão Command reduz o acoplamento 
(dependência) entre o objeto que chama a operação e o 
objeto que executa a operação; 
● Um comando pode ser composto por outros comandos; 
● É fácil acrescentar novos Commands porque não é 
preciso mudar as classes existentes;
Padrão Memento 
● Captura o estado de um objeto em um determinado 
momento, de maneira que este possa voltar a esse estado 
mais tarde. Sem violar o encapsulamento.
Aplicabilidade : Memento 
● Na implementação de ações de “voltar , desfazer” 
● Para o armazenamento de estados a serem restaurados 
de um objeto. 
● Para a captura de estados de objetos que são encobertos 
por encapsulamento.
Diagrama de Classe
Memento 
● Care Taker : Cuida do gerenciamento dos mementos. 
● Memento : É a classe que representa a memoria do 
estado do objeto. 
● Originator : É o objeto que terá seu estado armazenado.
Diagrama de sequência
Padrão Mediator 
● É um padrão comportamental utilizado para gerenciar a 
comunicação entre dois ou mais objetos.
Por que utilizá-lo? 
● O Mediator promove o acoplamento fraco ao evitar que os 
objetos se refiram uns aos outros explicitamente
Diagrama Classe : Mediator
Diagrama Sequencia : Mediator
Vantagens Padrão Mediator 
● Uma vantagem interessante, é a possibilidade de mudar o 
comportamento do mediator. É possível extendê-lo e 
trocar seu funcionamento, sem ter que alterar nenhuma 
das outras classes existentes.
Padrão Observer 
Define uma dependência uma para muitos entre objetos, de 
maneira que quando em objeto muda de estado todos os 
seus dependentes são notificados e atualizados 
automaticamente
Como garantir que os objetos 
perceba a mudança 
● Os observadores devem conhecer o objeto de que os 
interessam 
● O objeto de interesse deve notificar os observadores 
quando for mudado
Aplicabilidade : Observer 
● Quando uma mudança a um objeto requer mudanças a 
outros e você não sabe quantos outros objetos devem 
mudar ou quando um objeto deve ser capaz de avisar 
outros sem fazer suposições sobre quem são os 
objetos(ou seja não cria alto aclopamento)
Diagrama Classe : Observer
Observer 
● Observable : Tem uma interface para adicionar e remover 
observadores, ele conhece vários observadores e possui 
um método para modicar. 
● ConcreteObservable : Mantém o estado dos 
Observadores. 
● Observer : Define uma interface de atualização. 
● ConcreteObserver : Mantém referência ou recebe 
referência para o objeto em observação.
Diagrama Sequencia : Observer
Referências 
● https://brizeno.wordpress.com/category/padroes-de-projeto/builder/ 
● https://brizeno.wordpress.com/category/padroes-de-projeto/command/ 
● https://brizeno.wordpress.com/category/padroes-de-projeto/state/ 
● http://abrindoojogo.com.br/category/tecnico/projeto-de-software/Contatos : 
robsoncavalcante.es@gmail.com 
lucasalesvieira2@gmail.com

Padrões de Projeto para Jogos

  • 1.
    Padrões de projetospara jogos ● Alunos : Robson Cavalcante de Negreiros Lucas Sales Vieira ● Prof° responsável : Camilo Camilo Almendra
  • 2.
    O que éum padrão de projeto ● É uma solução geral reutilizável para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software.
  • 3.
    Categorias segundo (GoF) ● Padrões de criação:relacionado a instanciação de objetos. ● Padrões de estrutura: tratam das ações entre classe e objetos, como são construídos para formar estruturas maiores. ● Padrões de comportamento: tratam das interações e divisões entre classes e objetos, ou seja, dos algoritmos e atribuições de responsabilidades entre objetos com foco na comunicação entre os mesmos.
  • 4.
    Alguns dos padrõesmais utilizados em jogos ● Builder ● State ● Command ● Memento ● Mediator ● Observer
  • 5.
    Padrão Builder ●Separar a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações.
  • 6.
  • 7.
    ● Builder : É a Interface Abstrata para a criação das partes de um objeto. ● ConcreteBuilder : Constroe e monta as partes do objeto pela implementação da interface Builder. Fornece a interface para recuperar o produto. ● Director : Constroe o objeto de acordo com Builder que recebeu. ● Product : Representa o objeto complexo em construção
  • 8.
  • 9.
  • 10.
  • 11.
    Desvantagens do PadrãoBuilder ● Um problema com o padrão é que é preciso sempre chamar o método de construção para depois utilizar o produto em si.
  • 12.
    Padrão State ●Ele permite um objeto alterar seu comportamento quando o seu estado interno muda. Esta mudança é significativa e visível para o usuário, assemelhando-se a troca de classe.
  • 13.
    Quando Usar opadrão State ● O comportamento de um objeto depende do seu estado e ele deve mudar o seu comportamento em tempo de execução dependendo do estado. ● Os métodos têm grandes instruções condicionais em que as condições dependem do estado do objeto.
  • 14.
    Aplicabilidade : State ● Quando uma classe desempenha vários comportamentos ● Quando classes relacionadas forem diferentes apenas no comportamento
  • 15.
    Vantagens : State ● Faz as mudanças de estado explícitas. ● Os objetos Estado podem ser compartilhados se eles não contêm variáveis d e instância. ● Permite a um objeto alterar de classe em tempo de execução dado que ao modificar suas responsabilidades pela de outro objeto de outra classe, a herança e responsabilidades do primeiro mudaram pelas do segundo.
  • 16.
  • 17.
  • 18.
  • 19.
    Desvantagem : State ● Aumenta o número de subclasses
  • 20.
    Padrão Command ●O padrão de projeto (Design Pattern) Command é um padrão comportamental cuja intenção é encapsular uma solicitação como um objeto e desta forma permitir que você parametrize clientes com diferentes solicitações, enfileire ou registre(log) solicitações e suporte operações que podem ser desfeitas.(GoF)
  • 21.
  • 22.
    Command ● Comando:É a classe abstrata ou interface para a executar a operação, ela é a base para todo objeto Comando. ● ComandoConcreto: Implementa a operação executar() e possui a relação com o Receptor para executar a ação usando o mesmo a ela vinculado. ● Client : Cria o ComandoConcreto e atribui a vinculação com o seu Receptor correspondente. ● Receptor : Conhece como executar as operações associadas com a execução do comando.
  • 23.
    Aplicabilidade Command ●Queremos parametrizar objetos por uma ação a ser executada; ● Queremos especificar, enfileirar e executar solicitações em tempos diferentes; ● Queremos dar suporte para desfazer operações; ● Estruturar um sistema em torno de operações de alto nível, como transações por exemplo; ● Reduzir acoplamento entre as requisições dos clientes e o objetos que as executam; ● Para facilitar a implantação de novas operações e tornar mais simples a manutenção das operações.
  • 24.
    Vantagens Command ●O padrão Command desacopla o objeto que invoca a operação daquele que sabe como executá-la; ● O padrão Command reduz o acoplamento (dependência) entre o objeto que chama a operação e o objeto que executa a operação; ● Um comando pode ser composto por outros comandos; ● É fácil acrescentar novos Commands porque não é preciso mudar as classes existentes;
  • 25.
    Padrão Memento ●Captura o estado de um objeto em um determinado momento, de maneira que este possa voltar a esse estado mais tarde. Sem violar o encapsulamento.
  • 26.
    Aplicabilidade : Memento ● Na implementação de ações de “voltar , desfazer” ● Para o armazenamento de estados a serem restaurados de um objeto. ● Para a captura de estados de objetos que são encobertos por encapsulamento.
  • 27.
  • 28.
    Memento ● CareTaker : Cuida do gerenciamento dos mementos. ● Memento : É a classe que representa a memoria do estado do objeto. ● Originator : É o objeto que terá seu estado armazenado.
  • 29.
  • 30.
    Padrão Mediator ●É um padrão comportamental utilizado para gerenciar a comunicação entre dois ou mais objetos.
  • 31.
    Por que utilizá-lo? ● O Mediator promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente
  • 32.
  • 33.
  • 34.
    Vantagens Padrão Mediator ● Uma vantagem interessante, é a possibilidade de mudar o comportamento do mediator. É possível extendê-lo e trocar seu funcionamento, sem ter que alterar nenhuma das outras classes existentes.
  • 35.
    Padrão Observer Defineuma dependência uma para muitos entre objetos, de maneira que quando em objeto muda de estado todos os seus dependentes são notificados e atualizados automaticamente
  • 36.
    Como garantir queos objetos perceba a mudança ● Os observadores devem conhecer o objeto de que os interessam ● O objeto de interesse deve notificar os observadores quando for mudado
  • 37.
    Aplicabilidade : Observer ● Quando uma mudança a um objeto requer mudanças a outros e você não sabe quantos outros objetos devem mudar ou quando um objeto deve ser capaz de avisar outros sem fazer suposições sobre quem são os objetos(ou seja não cria alto aclopamento)
  • 38.
  • 39.
    Observer ● Observable: Tem uma interface para adicionar e remover observadores, ele conhece vários observadores e possui um método para modicar. ● ConcreteObservable : Mantém o estado dos Observadores. ● Observer : Define uma interface de atualização. ● ConcreteObserver : Mantém referência ou recebe referência para o objeto em observação.
  • 40.
  • 41.
    Referências ● https://brizeno.wordpress.com/category/padroes-de-projeto/builder/ ● https://brizeno.wordpress.com/category/padroes-de-projeto/command/ ● https://brizeno.wordpress.com/category/padroes-de-projeto/state/ ● http://abrindoojogo.com.br/category/tecnico/projeto-de-software/Contatos : robsoncavalcante.es@gmail.com lucasalesvieira2@gmail.com