studynotes

Repositório para armazenar todas as anotações de cursos feitos

View on GitHub

Padrões de projeto ou Design Patterns

Um padrão descreve um conjunto composto por um contexto, um problema e uma solução, isto é, um padrão descreve uma solução para um problema em um contexto. Contudo, um padrão descreve uma solução que ja tenha sido utilizada com sucesso em mais de um contexto.Portanto, um padrão descreve soluções consolidadas.

Conceitos

Composição

Apesar de não estar entre os quatro elementos principais de uma linguagem orientada a objetos, a composição é um conceito que vem implícito quando se fala em objetos. a composição combinada com o uso de abstrações pode ser eficaz na solução de diferentes problemas.

Hook Methods

Hook Methods são métodos que podem ser sobrescritos pelas subclasses como forma de estender e/ou especializar o comportamento da classe.

Hook Method.

Quando um hook method é utilizado a escolha é feita no momento em que o objeto é instaciando. Isso ocorre pois ao criarmos um novo objeto devemos escolher qual a classe concreta que será utilizada.

Hook Class

Hook Classes são classes que possuem o comportamento definido em uma outra classe que compõe a classe principal.

Na hook class a implementação pode ser trocada a qualquer momento, bastando trocar a instância que foi configurada.

Revisando modificadores de métodos

A seguir estão relacionados alguns modificadores de acesso e qual o recado que uma classe manda para duas subclasses quando utiliza cada um deles:

Padrões (Patterns)

Template Method

O Template method é aplicável quando se deseja definir um algoritmo geral, que estabelece uma série de passos para cumprir um requisito da aplicação. Porém, seus passos podem variar e é desejável que a estrutura de implementação forneça uma forma para que eles sejam facilmente substituídos.

Este padrão estabelece um modelo de algoritmo que possui algumas partes fixas e algumas partes variáveis. As partes variáveis são lacunas que precisam ser completadas para que o algoritmo faça realmente sentido. As lacunas são representada por hook methods que podem ser implementados na subclasse.

Caso seja uma lacuna obrigatório deverá ser definido como abstract.

Segue abaixo UML padrão do Template method.

Template Method

Pontos Positivos - Template Method

É importante lembrar de usar os modificadores adequados para que o ‘contrato’ entre a superclasse e subclasses não seja quebrada

Pontos Negativos - Template Method

Diferença entre Hook Method e Template Method

Os Hook Methods são uma técnica para permitir a extensão de comportamento, enquanto o Template Method é um padrão, ou seja, uma solução para um problema mais específico. Contudo, é importante notar que o padrão Template Method usa o Hook Method em sua solução.

O conceito de Hook Method é mais geral e inclusive é utilizado por outros padrões.

Strategy

O Strategy é um padrão que deve ser utilizado quando uma classe possuir diversos diversos algoritmos que possam ser utilizados de forma intercambiável. A Solução proposta consiste em delegar a execução do algoritmo para uma instância que compõe a classe principal. Isto é, o algoritmo de execução é composto (implementado) na classe principal em tempo de execução.

Strategy

Pontos positivos - Strategy

Pontos negativos - Strategy

Bridge

O padrão Bridge cria uma ponte entre duas hierarquias ligadas por um relação de composição permitindo que ambas variem de forma independente. Nesse caso, a ponte é caracterizada pela relação de composição entre classes. Um cenário em que esse tipo de solução é comum é quando temos uma hierarquia de abstrações e outra com implementações, permitindo que cada uma possa variar independentemente.

Bridge

Pontos positivos - Bridge

Pontos negativos - Bridge

Referências

GUERRA, Eduardo. Design Patterns com Java: Projeto orientado a objetos guiado por padrões. Editora Casa do Código, 2014.