Design Patterns

Principios de Projetos

  • Identifique os aspectos de seu aplicativo que variam e separe-os do que permanece igual
  • Programe para uma interface, não para uma implementação
  • Dar prioridade à composição
  • Busque designs levemente ligados entre objetos que interagem
  • As classes devem estar abertas para extensão, mas fechadas para modificação.
  • Dependa de abstrações. Não dependa de classes concretas (Dependency Inversion Principle)

Padrões OO

  • Padrão STRATEGY: define uma família de algoritmo, encapsula cada um deles e os torna intercambiaveis. A estratégia deixa o algoritmo variar independentemente dos clientes que o utilizam.
  • Padrão OBSERVER: define a dependênia um-para-muitos entre objetos para que quando um objeto mude de estado todos os seus dependentes sejam avisados e autalizados automaticamente.
  • Padrão DECORATOR: anexa responsabilidade adicionais a um objeto dinamicamente. Os decoradores fornecem uma alternativa flexível de subclasse para estender a funcionalidade.
  • Padrão FACTORY METHOD: define uma interface para criar um objeto, mas permite às classes decidir qual classe instanciar. O Factory method permite a uma classe deferir a instanciação para subclasses.
  • Padrão ABSTRACT FACTORY: fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.

Fundamentos OO

  • Abstração
  • Encapsulamento
  • Polimorfismo
  • Herança