Visão geral
O modo decorativo é a função de estender objetos de maneira transparente para o cliente e é uma alternativa às relações de herança. Em outras palavras, o cliente não pensa que há alguma diferença entre o objeto antes e depois da decoração. O modo decorativo pode expandir a função do objeto sem criar mais subclasses. A chave para o modo decorativo é que essa extensão é completamente transparente.
Estrutura do padrão
Diagrama de classe UML:
Caracteres no modo de decoração:
Restro de componente resumo (Projeto): fornece uma interface para regular objetos que estão prontos para receber responsabilidades adicionais.
Função de componentes específicos (Empregar): Defina uma classe que receberá responsabilidades adicionais
Papel decorativo (gerente): mantém uma instância de um objeto componente e define uma interface consistente com a interface do componente abstrato
Função decorativa específica (gerente, gerenteb): responsável por "aderir" responsabilidade adicional de objetos componentes
Exemplo de código
Entrevista do pacote; Projeto de interface {void docoding ();} classe emprega implementos do projeto {@Override public void docoding () {System.out.println ("Engenharia está programando ..."); }} Classe Manager implementa o projeto {Projeto Private Project; Gerente público (projeto do projeto) {this.Project = Project; } @Override public void docoding () {startNewwork (); Project.Docoding (); } public void startNewwork () {}} classe Managera Extends Manager {public ManagerAra (Projeto Projeto) {Super (Project); } @Override public void startNewwork () {System.out.println ("Gerente de desenvolvimento inicia um novo plano de trabalho"); }} Classe ManagerB estende o gerenciador {public ManagerB (Projeto Projeto) {Super (Project); } @Override public void startNewwork () {System.out.println ("Gerenciador de testes inicia um novo plano de trabalho"); }} public class Mantest {public static void main (string arg []) {Project Project = new Employte (); Project Managera = new Managera (Projeto); Gerenciador de projetosB = new ManagerB (Projeto); gerentera.docoding (); gerenteb.docoding (); }} Vantagens e desvantagens do modo decorativo:
vantagem:
O objetivo do modo decorativo e da herança é estender a função do objeto, mas o modo decorativo pode fornecer mais flexibilidade do que a herança. O modo decorativo permite que o sistema decida dinamicamente "colar" uma "decoração" necessária, e a relação de herança é diferente. A relação de herança é estática e é decidida antes da execução do sistema.
Ao usar diferentes categorias decorativas específicas e combinações dessas categorias decorativas, os designers podem criar muitas combinações diferentes de comportamento.
deficiência:
Devido ao uso de padrões decorativos, um número menos de classes pode ser necessário do que usar relacionamentos de herança. O uso de menos classes certamente facilita o desempenho do design. No entanto, por outro lado, o uso de padrões decorativos produz mais objetos do que usar relacionamentos de herança. Mais objetos podem dificultar os erros, especialmente porque todos parecem semelhantes.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.