Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Design Patterns

Design Patterns

O que são e quando devem ser usados?

Vinícius Krolow

April 18, 2013
Tweet

More Decks by Vinícius Krolow

Other Decks in Programming

Transcript

  1. é SIM sobre o seu código problemas escrever é sobre

    como resolver comuns seu código para
  2. Padrões Criacionais Abstract Factory Builder Factory Method Lazy Initialization Multiton

    Object Pool Prototype Singleton Resource acquisition is initialization
  3. Padrões Comportamentais Chain of responsibility Command Interpreter Iterator Mediator Memento

    Null object Observer Servant Specification State Strategy Template Method Visitor
  4. Padrões Concorrentes Active Object Balking Binding properties Double-checked locking Event-based

    asynchronous Guarded suspension Lock Messaging design pattern (MDP) Monitor object Reactor Read-write lock Scheduler Thread pool Thread-specific storage
  5. Observer "O padrão Observer define uma dependência de um-para-muitos entre

    objetos, onde os observadores serão notificados sobre mudanças no estado interno do objeto central."
  6. Resumão • Acoplamento fraco; • Possui implementação nativa em várias

    linguagens modernas; • Normalmente usado com o padrão MVC para a comunicação entre suas camadas; • Auxilia na comunicação de objetos distantes; • É Async provavelmente tem ele!
  7. Adapter "O padrão Adapter (também chamado de Wrapper), é usado

    para conectar diferentes interfaces de forma consistente. Ele provê uma interface compatível com o código-cliente usando internamente a interface original."
  8. Resumão • Mesmo princípio dos adaptadores de tomadas elétricas; •

    É uma caixa preta capaz processor um input para produzir o output desejado; • Facilita a conversão de tipos e a integração entre diferentes bibliotecas.
  9. Factory "O padrão Factory é responsável pela criação de objetos.

    Ele pode fornecer uma interface para criação de famílias de objetos sem a necessidade de especificar sua classe concreta"
  10. Resumão • Comum em bibliotecas de GUI - onde todos

    elementos possuem a mesma interface, embora o comportamento interno seja particular a cada um • É normal aparecer junto de outros padrões de projeto (strategy, dependency injection, etc) • Auxilia na implementação de testes automatizados • É o cara para criar objetos dinâmicamente!
  11. Iterator "O padrão Iterator permite a iteração entre os elementos

    de uma coleção qualquer, sem levar em consideração sua implementação e/ou como esses dados são armazenados."
  12. Resumão • Interface única e simplificada para iterar sobre todos

    elementos de uma coleção • A estrutura interna, usada para armazenar os itens da coleção, torna-se irrelevante para o programador-usuário • Possibilita a criação de Coleção de Objetos ao invês de uso de tipos nativos (array, map);
  13. MVC "Model-view-controller é um padrão de projeto que visa modularizar

    o sistema em três partes independentes: model (dados/informação), controller (lógica da aplicação) e view (interação com o usuário)."
  14. Resumão • Separa as camadas de negócio da sua aplicação;

    • Foi idealizado para lidar com pequenas camadas! • Mal compreendido pela sociedade programadora!
  15. Proxy "Um proxy, em sua forma mais geral, é uma

    classe que funciona como uma interface para outra classe. A classe proxy poderia conectar-se a qualquer coisa: uma conexão de rede, um objeto grande em memória, um arquivo, ou algum recurso que é difícil ou impossível de ser duplicado." Wikipédia
  16. Resumão • LazyLoad é com ele! • Auxilia acesso remoto

    de classes; • Operações custosas, vão começar a custar barato :) • Null pattern pode ser com ele também!
  17. Singleton "O Singleton é uma classe de uma instância única

    com um ponto de acesso global. Seu objetivo é ser um objeto "solitário", independente do ciclo de vida da aplicação."
  18. Resumão • Não é o mesmo que uma classe com

    métodos estáticos • Classe de um único objeto • Amplamente usada com bibliotecas de logging/debugging • Controverso, muitas vezes considerado um anti-pattern • É um inferno para testar!
  19. Dependecy Injection "O modelo isola a "lógica" (A lógica da

    aplicação) da interface do usuário (Inserir e exibir dados), permitindo desenvolver, editar e testar separadamente cada parte." Wikipédia
  20. Resumão • Esse cara sou eu (DI)! • Chega a

    nem ser um padrão de tão simples! • Torna seu código testável e auxilia no desacoplamento do código (avoid no new) • DIC ajudam na instância de objetos com multiplas depêndecias (aninhados) •
  21. e o que isso me ajuda no fim? ma vamo

    lá, só mais um pouco...
  22. com código para orgulhar a família • ▪ • •

    • • desacoplado testável legível extensível reutilizável orientado a interfaces
  23. Nome: Hack Thursday Exemplo: Apresentação de Hoje Contexto: Aplicável todas

    as quintas Problema: Sede de "conhecimento" Solução: Vir todas as quintas você também pode criar os seus!
  24. "Herança pode ser o câncer do seu código!" by Nós

    lembre é Orientação a Objetos não a Classes .