Design Patterns

Olá!

Design patterns, ou padrões…

Embora seja já de conhecimento comum de muitos é importante sempre revisar!

Para os que não conhecem ou nunca tiveram coragem de enfrentar, não tem jeito, na situação atual em termos de implementação e arquitetura é matéria certa para vários concursos…

Vamos lá.

Começou em 95 com o famoso livro “Gang of Four”: Design Patterns: Elements of Reusable Object-Oriented Software em 1995 por Eric Gamma, Richard Helm, Ralph Johnson e John Vlissides, que descreveu 23 padrões de implementação baseados na experiência dos autores:

Padrões de Criação (Creational)

1.1 Builder

Separar a construção de objeto complexo da representação para criar representações diferentes com mesmo processo.

1.2 Factory Method

Definir uma interface para criar um objeto, mas deixar que subclasses decidam que classe instanciar.

1.3 Abstract Factory

Prover interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.

1.4 Prototype

Especificar tipos a criar usando uma instância como protótipo e criar novos objetos ao copiar este protótipo.

1.5 Singleton

Garantir que uma classe só tenha uma única instância, e prover um ponto de acesso global a ela.

2 Padrões Estruturais (Structural)

2.1 Adapter

Converter a interface de uma classe em outra interface esperada pelos clientes.

2.2 Bridge

Desacoplar uma abstração de sua implementação para que os dois possam variar independentemente.

2.3 Composite

Permitir o tratamento de objetos individuais e composições desses objetos de maneira uniforme.

2.4 Decorator

Anexar responsabilidades adicionais a um objeto dinamicamente.

2.5 Facade

Oferecer uma interface única de nível mais elevado para um conjunto de interfaces de um subsistema.

2.6 Flyweight

Usar compartilhamento para suportar eficientemente grandes quantidades de objetos complexos.

2.7 Proxy

Prover um substituto ou ponto através do qual um objeto possa controlar o acesso a outro.

3 Padrões Comportamentais (Behavioral)

3.1 Chain of Responsibility

Compor objetos em cascata para, através dela, delegar uma requisição até que um objeto a sirva.

3.2 Command

Encapsular requisição como objeto, para clientes parametrizarem diferentes requisições, filas, e suportar operações reversíveis.

3.3 Interpreter

Dada uma linguagem, definir uma representação para sua gramática junto com um interpretador.

3.4 Iterator

Prover uma maneira de acessar elementos de um objeto agregado seqüencialmente sem expor sua representação interna.

3.5 Mediator

Definir um objeto que encapsula a forma como um conjunto de objetos interage.

3.6 Memento

Externalizar o estado interno de um objeto para que o objeto possa ter esse estado restaurado posteriormente.

3.7 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.

3.8 State

Permitir a um objeto alterar o seu comportamento quanto o seu estado interno mudar

3.9 Strategy

Definir uma família de algoritmos, encapsular cada um, e fazê-los intercambiáveis.

3.10 Template Method

Definir o esqueleto de um algoritmo dentro de uma operação, deixando alguns passos a serem preenchidos pelas subclasses.

3.11 Visitor

Representar uma operação a ser realizada sobre os elementos de uma estrutura de objetos.

Estes são os 23 padrões descritos no famoso livro…mas é importante lembrar que não são os únicos, padões como MVC, MVP, padrões em Java, e autores como Martin Fowler estão em alta atualmente e valem uma conferida.

Bons estudos.

(Mauricio Ferste [email protected])

»crosslinked«

Mauricio Antonio Ferste

Graduação em Bacharelado em Informática pela Universidade Federal do Paraná (1997) e mestrado em Engenharia Elétrica e Informática Industrial pela Universidade Tecnológica Federal do Paraná (2006). Tem experiência na área de Ciência da Computação, com ênfase em Sistemas de Informação. Atualmente funcionário do SERPRO (www.serpro.gov.br), atua no desenvolvimento de sistemas. Professor atuante na FAMEC (http://www.famec.com.br), no curso de Bacharelado em Sistemas de Informação (Curriculum Lattes: http://lattes.cnpq.br/9368615800123473).

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *