Artigo Padrão Decorator
Por: neny777 • 11/11/2018 • Artigo • 1.745 Palavras (7 Páginas) • 140 Visualizações
Linguagens e Técnicas de Programação III
Padrão de Projeto Decorator
Dênis Antonio Rocha, Jéssica Alves de Lima Venâncio, Laurent Cassiano e Lucas Freitas
Discente Bacharéis cursando o 4° período de Sistemas de Informação pelo Instituto Federal do Sul de Minas- Campus Machado- Minas Gerais, tendo como orientador Professor Emerson A. Carvalho na disciplina de Linguagens de Programação III
Machado, 09 de dezembro de 2016
Resumo
No presente trabalho é abordado conceitos de um dos padrões de projetos em Java, metodologia de programação que foi introduzida na década de 70 por Christopher Alexander. É apresentado definições e especificações sobre o padrão DECORATOR, também conhecido como Wrapper, explanando seu conceito que acompanhado de exemplos facilitaram a interpretação de como é sua atuação.
Palavras-chave: programação, JAVA, padrão, projetos
Abstract
The present study presents a concept of one of the Java project patterns, programming methodology introduced in the 70s, by Christopher Alexander. It’s an approach on the definitions and specifications on the Decorator pattern, also known as Wrapper, explaining its concepts, not to mention the examples which make easier the interpretation of how its performance is.
Keywords: programming, java, pattern, projects
- Sumário
O padrão Decorator 3
Por que existe este Padrão? 3
Vantagens 3
Desvantagens 4
Implementação 4
Exemplo de Implementação 4
Uso do Padrão no Java 5
Padrões Relacionados 6
Conclusão 6
Referências 7
- O padrão Decorator
O Decorator é conhecido como um padrão estrutural. Ele é usado para formar grandes estruturas de objetos em muitos objetos diferentes. Sua função é permitir o empacotamento dinâmico de objetos para modificar suas responsabilidades e comportamentos existentes.
À medida que se adiciona mais comportamentos a uma classe, logo encontrará a necessidade de manutenção, como uma nova classe é criada para cada combinação possível. Enquanto isso, o Decorator pode fornecer uma alternativa melhor para muitas subclasses, ao auxiliar na agregação de novas responsabilidades aos objetos e oferecer alternativas inteligentes para o uso de subclasses com funções extras. Com ele a inserção de novas funcionalidades, não afetam outros objetos e responsabilidades podem ser removidas.
Um exemplo do mundo real seria um quadro. A imagem é o nosso objeto, que tem suas próprias características. Para fins de exibição, adicionamos uma moldura à imagem, para decorá-la.
- Por que existe este Padrão?
Se alguém quiser adicionar alguma funcionalidade para o objeto individualmente ou alterar o estado de determinado objeto em tempo de execução, não é possível, o que podemos é fornecer o comportamento específico para todo o objeto dessa classe com a ajuda da herança ou usando subclasse, mas o Decorator torna possível o fornecimento do objeto individualmente da mesma classe um comportamento ou estado específico em tempo de execução. Isso não afeta outro objeto da mesma classe em Java.
Por trabalhar com objetos individuais e não com uma classe inteira, por embutir um novo componente aos objetos o Decorator possui esta flexibilidade. Por exemplo: Temos uma tabela como componente, e adicionamos uma borda a ela, esta borda seria um Decorator.
- Vantagens
Maior flexibilidade do que a herança estática, tornando mais fácil acrescentar novas responsabilidades a objetos, tornando possível acrescentar ou remover responsabilidades / funcionalidades em tempo de execução, também torna mais fácil acrescentar uma propriedade duas ou mais vezes. Oferece uma ideologia “Use quando apenas quando for necessário ” evitando classes sobrecarregadas de características que poderão não ser utilizadas. Um Decorator funciona como um envoltório transparente, e independente do (s) objeto (s) que venham a utiliza-los, aprimorando ou modificando a funcionalidade do objeto.
- Desvantagens
Grande quantidade de pequenos objetos, Projetos que utilizam o Decorator frequentemente resultam em uma grande quantidade de pequenos objetos com pequenas diferenças entre si, diferenciando em sua maioria apenas na maneira como estão interconectados. Embora isto facilite a customização de quem conhece o código/projeto, torna mais difícil para aprender e depurar, quando não se conhece o código.
- Implementação
A interface de um Decorator deve estar em conformidade, “sincronia” com o objeto que o mesmo pretende decorar. Não há necessidade de criação de uma classe abstrata Decorator, quando se acrescentar uma nova responsabilidade. Para manter a conformidade e “leveza”, componentes e decoradores devem ser descendentes de uma classe mãe em comum.
- Exemplo de Implementação
Inicialmente define-se abaixo uma Janela abstrata e sua respectiva implementação:
abstract class Janela {
public abstract void draw ();
}
class JanelaSimples extends Janela {
public void draw () {
System.out.println(“desenha uma janela”);
}
}
abstract class JanelaDecorator extends Janela {
protected Janela janelaDecorada;
public JanelaDecorator (Janela janelaDecorada) {
this.janelaDecorada = janelaDecorada;
...