Padrões de projeto
Segue abaixo o mapa de assuntos tratados no blog até o presente momento sobre padrões de projetos / design patterns. O que já estiver publicado irá possuir um link de acesso direto ao post. Esta lista irá crescer e evoluir ao longo do tempo.
Padrões de projetos clássicos tratados pelo GoF:
- Introdução: O que é e porque aprender são as perguntas tratadas aqui;
- Visão geral: Uma apresentação dos 23 padrões de projetos;
- Adapter: Converter a interface de uma classe em outra interface esperada pelos clientes;
- Façade: Oferecer uma interface única de nível mais elevado para um conjunto de interfaces de um subsistema;
- Composite: Permitir o tratamento de objetos individuais e composições desses objetos de maneira uniforme;
- Bridge: Desacoplar uma abstração de sua implementação para que os dois possam variar independentemente;
- Singleton: Garantir que uma classe só tenha uma única instância, e prover um ponto de acesso global a ela;
- Observer: Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, os seus dependentes sejam notificados e atualizados automaticamente;
- Mediator: Definir um objeto que encapsula a forma como um conjunto de objetos interagem;
- Proxy: Prover um substituto ou ponto através do qual um objeto possa controlar o acesso a outro;
- Chain of Responsibility: Compor objetos em cascata para, através dela, delegar uma requisição até que um objeto a sirva;
- Flyweight: Usar compartilhamento para suportar eficientemente grandes quantidades de objetos complexos;
- Builder: Separar a construção de objeto complexo da representação para criar representações diferentes com mesmo processo;
- Factory Method: Definir uma interface para criar um objeto mas deixar que subclasses decidam que classe instanciar;
- Abstract Factory: Prover interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas;
- Prototype: Especificar tipos a criar usando uma instância como protótipo e criar novos objetos ao copiar este protótipo;
- Memento: Externalizar o estado interno de um objeto para que o objeto possa ter esse estado restaurado posteriormente;
- Template Method: Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses;
- State: Permitir a um objeto alterar o seu comportamento quanto o seu estado interno mudar;
- Strategy: Definir uma família de algoritmos, encapsular cada um, e fazê-los intercambiáveis;
- Command: Encapsular requisição como objeto, para clientes parametrizarem diferentes requisições, filas, e suportar operações reversíveis;
- Interpreter: Dada uma linguagem, definir uma representação para sua gramática junto com um interpretador;
- Decorator: Anexar responsabilidades adicionais a um objeto dinamicamente;
- Iterator: Prover uma maneira de acessar elementos de um objeto agregado seqüencialmente sem expor sua representação interna;
- Visitor: Representar uma operação a ser realizada sobre os elementos de uma estrutura de objetos;