O decorador é frequentemente traduzido como "decoração". Essas duas entidades são necessárias no modo decorador.
Definição do decorador: adiciona dinamicamente algumas responsabilidades extras a um objeto, como pintar a parede. O uso do modo decorador é mais flexível do que usar a geração de subclasses para obter expansão funcional.
Por que usar decorador
Normalmente, podemos usar a herança para obter a expansão da função. deve prever essas funções de expansão.
O motivo do uso do decorador é que essas funções precisam ser decididas dinamicamente pelo usuário para participar. O Decorator fornece um método "Plug and Play" para decidir quando adicionar quais recursos durante o tempo de execução.
Como usar o modo decorativo
Pegue o exemplo de condução de pilha no adaptador. Dirigir pilhas, como cavar.
Vamos criar uma interface primeiro:
A cópia do código é a seguinte:
Trabalho de interface pública {
public void insert ();
}
O trabalho da interface tem uma implementação específica: insira pilhas quadradas ou pilhas circulares. Vamos tomar a inserção de uma pilha quadrada como exemplo:
A cópia do código é a seguinte:
classe pública Squarepeg implementa o trabalho {
public void insert () {
System.out.println ("Inserção da pilha quadrada");
}
}
Atualmente, há um aplicativo: antes da pilha ser acionada, cavando um orifício e, depois que a pilha é acionada, a placa de madeira é pregada na pilha Pode ser necessário para acertar o rack depois que a pilha for acionada (apenas uma metáfora).
Em seguida, usamos o modo decorador, onde a pilha quadrada Squarepeg é o decorado (pintado por tinta), precisamos pintar um pouco de "pintura" no decorado, e essas tintas são essas funções extras.
A cópia do código é a seguinte:
public classe Decorator implementos de trabalho {
trabalho privado;
// A funcionalidade adicional é embalada nesta lista
Private ArrayList Outros = new ArrayList ();
// Use o novo método combinado no construtor para introduzir objetos de trabalho;
Decorador público (trabalho de trabalho) {
this.work = work;
outros.Add ("Dig um buraco");
outros.
}
public void insert () {
newmethod ();
}
// No novo método, adicionamos outros métodos antes da inserção, a ordem aqui é especificada pelo usuário com flexibilidade
public void newMethod () {
outros methodod ();
work.insert ();
}
public void OtherMethod () {
Listiterator listiterator = others.ListIterator ();
while (listiterator.hasnext ()) {
System.out.println (((string) (listiterator.Next ())) + "em andamento");
}
}
}
No exemplo acima, classificamos os orifícios de escavação e as placas de pregar na frente da inserção da pilha.
Ok, o modo decorador está fora, vamos ver como chamá -lo:
A cópia do código é a seguinte:
Trabalho squarepeg = new squarepeg ();
Decorador de trabalho = novo decorador (Squarepeg);
decorator.insert ();
O modo decorador está concluído aqui.
Se você tiver cuidado, descobrirá que a chamada acima é semelhante à chamada que lemos quando lemos o arquivo:
A cópia do código é a seguinte:
FileReader fr = new FileReader (nome do arquivo);
BufferErader BR = new BufferredReader (FR);
De fato, a API de E/S de Java é implementada usando o decorador.
Implementação de decoradores em Jive
No sistema do fórum, alguns caracteres especiais não podem aparecer no fórum, como "Down with XXX", precisamos filtrar essas fontes "reacionárias". Não os deixe aparecer ou exibi -los em alto brilho.
Em um artigo falando especificamente sobre Jive na coluna IBM Java, foi mencionado que o forummessageFilter.java em Jive usa o modo Decorator. , então você pode reorganizar o ForummessageFilter como o modo decorador.
Portanto, quando decidimos se é realmente o modo decorador e realmente usará o modo decorador, devemos entender a definição do modo decorador e os papéis envolvidos (decoram e decoradores).