quinta-feira, 22 de agosto de 2013

Design Pattern Gof

 1.1 Design Pattern Gof (CreStruBeh) 5, 7, 11

Poderíamos dizer, de forma sucinta, que um design pattern "é uma solução para um problema em um determinado contexto", onde:
  • Contexto se refere ao conjunto de situações que se repetem, nas quais o design pattern pode ser aplicado;
  • Problema se refere ao conjunto de "forças" – objetivos e limitações – que ocorrem dentro do contexto;
  • Solução é uma estrutura formal para ser aplicada na resolução do problema.

Creational Patterns

Abstract Factory (DAOFactory)
      Prove uma interface para a criação de família de objetos relationados ou dependentes sem especificar as suas classes concretas
      Permite que o cliente instancie a classe sem se preocupar com a classe concreta.  Prove uma interface para criação do objeto.  DAOFactory.









·         Builder (Construção de objetos com várias partes)
      Separa a construção de um objeto complexo das suas representações de forma que o mesmo processo de construção possa criar diferentes representações.
      Possui vários métodos parar criar um conjunto de objetos para construir um objeto complexo com várias partes.  Separa a construção de um objeto complexo da sua representação.  Esse processo cria diferentes representações.




·         Factory Method ( DAO)
      Define uma interface de criação de um objeto, mas deixa a subclasse decidir quais classes instanciar.  Factory Method deixa a classe que a usa definir a instanciação das subclasses.
      Define uma interface de criação de um objeto, mas permite que subclasse decida qual classe instanciar.  DAO








·         Prototype
      Especifica qual tipo de objetos devem ser criados usando uma instância prototipada e cria novos objetos pela cópia desse protótipo.
      Define um conjunto de valores iniciais para um objeto instanciado e cria novos objetos copiando desse protótipo.







·         Singleton
      Garante que somente uma instancia da classe foi criada.  Provê um ponto global de acesso ao objeto.







Structural Patterns

·         Adapter (Wrapper)
      Converte a interface de uma classe em outra interface que o cliente espera.  Cria classes intermediárias quando duas classes não conseguem conversar, para que a classe cliente entenda a primeira.
      Cria classes intermediárias quando duas classes não conseguem conversar e assim a classe cliente possa entender a primeira.
      Para resolver incompatibilidade de classes.  Feita depois do Design.  Ex: Wrapper.
      Geralmente não se faz por herança







·         Bridge (Faz as interfaces conversarem  - Polimorfismo)
      Desacopla uma abstração de sua implementação. Faz classes construídas independentemente trabalharem juntas.  Assim as implementações podem variar independentemente.  Provê interface estável para os clientes.  Antes do Design.  É o próprio polimorfismo.





·         Composite (Composição de objeto em forma de árvore)
      Compõe objetos em uma estrutura de árvore para representar hierarquias “parte-todo”.  Composite deixa o cliente tratar objetos individuais e composições de objetos uniformemente.
      Compõe objetos para que o conjunto de objetos seja visto como um só.  Subclasse aponta para o pai.  Objetos na estrutura de árvore para representar hierarquia parte-todo.







·         Decorator (Adiciona responsabilidade dinamicamente sem criar subclasses)
      Usado para adicionar responsabilidade dinamicamente.  Alternativa para a criação novas subclasses para a extensão de funcionalidades.  Exemplo da inclusão da Scroll Bar.
      Herda do pai e também cria novas responsabilidades em um método.  Geralmente usa o super.method()




·         Façade (camada)
      Prove uma interface única para um conjunto de interfaces de um sistema.  Define uma interface de alto nível e deixa o sistema mais simples usar.  Parece com o Mediator, só que é uma única direção.
      Provê uma classe com métodos que chamam outras com uma interface de fachada.






·         Flyweight (Compartilhamento de objetos)
      Compartilhamento de objetos por várias clientes.  Usado quando possui grande número de objetos iguais.  Ex: Texto. Teclado.

·         Proxy
      Prove um delegado(representante) para outros objeto controlar o seu acesso.  É um objeto que encapsula o objeto Real para protegê-lo de algum forma ou realizar algum processamento anterior.  Ex: Corba.




Behavioral Patterns
·         Chain of Responsibility (Tomcat)
      Evita acoplamento do sender de  request para o receiver dando chances para ele lidar com o request. 
      Uma lista de objetos que passa a requisição entre eles fazendo com que somente os responsáveis cuidem da requisição. Ex: Tomcat no tratamento de requisições, tratamento de eventos.






·         Command (Undo)
      Emcapsula o request como um objeto.  Permite que o cliente parametrize a chamada ao objeto.
      Uma classe que possui o método execute.  Essa classe foi configurada anteriormente e seu cliente não precisa saber do seu conteúdo.  ex: Undo


·         Interpreter (Expressão regular ou compilador)
      Dá uma linguagem, define a representação para a gramática a ser seguida e um interpretador que use essa representação.
      Interpreta uma sentença.  Ex: expressão regular.





·         Iterator
      Provê uma forma de acesso a elementos de um objeto agregado sequencialmente sem expor a sua representação interna.
      Permite percorrer uma lista de diferentes formas, sem expor a representação interna da lista.

·         Mediator (Um intermediário)
      Objeto intermediário que define como um conjunto de objetos vão se interagir.  Facilita o reuso na comunicação e diminui o acoplamento.  Os objetos só se conhecem através do mediator reduzindo o acoplamento.  Colegas enviam e recebem mensagem do Mediator.  ex: Dialog Box, Servlet(Front Controller).  Evita que objetos se comuniquem em exagero.  Simplifica a comunicação entre objetos e controla a comunicação.

·         Memento (usado no undo)
      Captura e externaliza o estado interno de um objeto sem violar o encapsulamento.  Assim, o objeto pode ter seu estado restaurado posteriormente.
      Guarda o estado.  Um organizador cria o memento e passar o seu estado para que ele possa ser restaurado.  Pode criar grande overhead se salvar muita informação. ex: Undo

·         Observer
      Define uma forma de vários objetos poderem ser notificados de uma mudança através de uma dependência um-para-muitos.

·         State       
      Permite um objeto alterar o seu comportamento quando seu estado interno modificar.  O objeto parecerá ter mudado sua classe.
      Geralmente o objeto tem aponta para uma interface que define o comportamento.  Dependendo da classe que ele apontar o comportamento do objeto é um.




·         Strategy  (Algoritmos diferentes)
      Define uma família de algoritmos, os encapsula e os faz imutáveis.  Strategy deixa o algoritmo mudar dependendo do cliente.
      Define uma interface com a assinatura do algoritmo.  A herança determina qual algoritmo será usado.  O cliente só conhece a interface.  Permite que o algoritmo varie independentemente dos clientes.




·         Template Method (Parte do algoritmo é usado implementado pelo filho)
      Defina um esqueleto de um algoritmo e alguns passos são definidos nas subclasses.  Método que parte de um algoritmo está na classe pai e outra parte nas classes filhas.



·         Visitor
      Representa uma operação a ser realizada nos elementos de uma estrutura de um objeto.  Visitor te deixa definir uma nova operação sem mudar a classe dos elementos na qual operam.
      Permite que se criem vários métodos para que um visitor o use nas classes visitadas.  Utiliza uma espécie de observer.  O objeto visitado usa um accept(Visitor v) para aceitar o visitor.  Então o visitor tem acesso parcial à estrutura do objeto visitado.
       

Nenhum comentário:

Postar um comentário