Definição: estenda dinamicamente a funcionalidade de um objeto sem precisar alterar o arquivo original e usar a herança. Ele envolve o objeto real criando um objeto de wrapper, ou seja, decoração.
Características:
(1) Objetos decorativos e objetos reais têm a mesma interface. Dessa forma, o objeto cliente pode interagir com o objeto decorativo da mesma maneira que o objeto real.
(2) O objeto decorativo contém uma referência a um objeto real
(3) O objeto decorativo aceita todas as solicitações do cliente. Ele encaminha essas solicitações para o objeto real.
(4) Objetos decorativos podem adicionar algumas funções adicionais antes ou depois de encaminhar essas solicitações. Isso garante que, em tempo de execução, funções adicionais possam ser adicionadas externamente sem modificar a estrutura de um determinado objeto. No design orientado a objetos, as extensões funcionais de uma determinada classe são geralmente alcançadas por meio de herança.
Aplicações no desenvolvimento de nível corporativo e estruturas comumente usadas: streaming de IO Arquitetura subjacente
composição:
(1) Função do componente abstrato: forneça uma interface abstrata para regular objetos prontos para receber responsabilidades adicionais.
(2) Função do componente concreto: Defina uma classe que receberá responsabilidades adicionais.
(3) Função do decorador: mantém uma instância de um objeto de componente e implementa uma interface consistente com a interface do componente abstrato.
(4) Função do decorador de concreto: responsável por adicionar responsabilidades adicionais a objetos componentes.
Exemplos específicos:
/*** Os seguintes exemplos de casas de decoração*/Public Class Demo {public static void main (string [] args) {generichouse House = New Generichouse (); Garagem garagem = nova garagem (casa); garage.Dosomething (); Cozinha de cozinha = nova cozinha (casa); Kitchen.Dosomething (); }}/*** Função do componente abstrato: Uma interface para regular a localização da decoração específica*/interface Abstracthouse {public void doSomething ();}/*** Função decorativa: mantenha o objeto a ser decorado*/classe mestre implementa abstracthouse {abstração privada abstração de abstração; Public Master (Abstracthouse Abstracthouse) {this.abstracthouse = abstracthouse; } public void Dosomething () {System.out.println ("Papel decorativo: titular de papel decorativo, aqui está o proprietário da casa"); abstracthouse.dosomething (); }}/*** Função de componente específica: objeto específico que precisa ser decorado*/classe Generichouse implementa a abstração {public void Dosomething () {System.out.println ("Função específica do construtor: a casa pode viver em pessoas e abrigo do vento e da chuva!"); }}/*** Função decorativa específica: A decoração específica é feita aqui e herda do papel decorativo. Como o papel decorativo mantém o objeto decorativo, *, ele também mantém o objeto decorativo e pode ser decorado */classe Garage estende mestre {public garagem (abstracthouse Abstracthouse) {super (Abstracthouse); } public void Dosomething () {super.Dosomething (); System.out.println ("Função decorativa específica: Decoração aqui, decore uma casa em uma garagem, para que a casa possa armazenar o carro"); }}/*** Função decorativa específica: A decoração específica é feita aqui, herda do papel decorativo, porque o papel decorativo mantém o objeto decorativo,* para que também possua o objeto decorativo e pode ser decorado*/Class Kitchen estende o mestre {cozinha pública (abstração abstacta) {Super (Abstracthouse); } public void Dosomething () {super.Dosomething (); System.out.println ("Função decorativa específica: Decoração aqui, decore uma casa em uma cozinha, para que a casa possa cozinhar"); }}No desenvolvimento real, a função de embalagem de decorar o padrão desempenha um ótimo papel. Podemos fazer algumas outras operações no objeto sem alterar o objeto original, o que pode impedir que nos transformem o objeto, mas ao mesmo tempo podemos concluir algumas operações.
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.