Definición: Extienda dinámicamente la funcionalidad de un objeto sin tener que cambiar el archivo original y usar la herencia. Envuelve el objeto real creando un objeto de envoltorio, es decir, decoración.
Características:
(1) Los objetos decorativos y los objetos reales tienen la misma interfaz. De esta manera, el objeto del cliente puede interactuar con el objeto decorativo de la misma manera que el objeto real.
(2) El objeto decorativo contiene una referencia a un objeto real
(3) El objeto decorativo acepta todas las solicitudes del cliente. Reenvía estas solicitudes al objeto real.
(4) Los objetos decorativos pueden agregar algunas funciones adicionales antes o después de reenviar estas solicitudes. Esto asegura que en tiempo de ejecución, se puedan agregar funciones adicionales externamente sin modificar la estructura de un objeto dado. En el diseño orientado a objetos, las extensiones funcionales a una clase dada generalmente se logran a través de la herencia.
Aplicaciones en desarrollo de nivel empresarial y marcos de uso común: transmisión de IO arquitectura subyacente
composición:
(1) Rol de componente abstracto: proporcione una interfaz abstracta para regular objetos que estén listos para recibir responsabilidades adicionales.
(2) Componente concreto Rol: Defina una clase que recibirá responsabilidades adicionales.
(3) Rol de decorador: contiene una instancia de un objeto componente e implementa una interfaz consistente con la interfaz de componente abstracto.
(4) Rol de decorador de concreto: responsable de agregar responsabilidades adicionales a los objetos componentes.
Ejemplos específicos:
/*** Los siguientes ejemplos de casas de decoración*/Public Class Demo {public static void main (string [] args) {genericheuse house = new GenericHouse (); Garaje Garaje = Garaje nuevo (casa); Garage.Dosomething (); Cocina cocina = nueva cocina (casa); Kitchen.dosomething (); }}/*** Componente abstracto Rol: una interfaz para regular la ubicación de la decoración específica*/Interface Abstracthouse {public void dosomthing ();}/*** rol decorativo: mantenga el objeto para decorar*/clase maestro implementa abstractchouse {abstricthouse privado abstractCthouse; Public Master (Abstractthouse AbstractThouse) {this.AbstractThouse = AbstractThouse; } public void dosomething () {System.out.println ("Rol de decoración: Titular de rol decorativo, aquí está el propietario de la casa"); abstracthouse.dosomting (); }}/*** Cole de componente específico: Objeto específico que debe decorarse*/Class GenericHouse implementa Abstractthouse {public void dosomething () {System.out.println ("Rol de constructor específico: ¡la casa puede vivir en personas y refugiarse del viento y la lluvia!"); }}/*** Rol decorativo específico: La decoración específica se realiza aquí y hereda del papel decorativo. Debido a que el papel decorativo contiene el objeto decorativo, *, por lo que también contiene el objeto decorativo y puede ser decorado */class Garage extiende el maestro {Public Garage (Abstractthouse AbstractThouse) {super (AbstractThouse); } public void dosomething () {super.dosomthing (); System.out.println ("Rol decorativo específico: Decoración aquí, decore una de las casas en un garaje, para que la casa pueda almacenar el automóvil"); }}/*** Rol decorativo específico: La decoración específica se realiza aquí, hereda del papel decorativo, porque el papel decorativo contiene el objeto decorativo,* por lo que también contiene el objeto decorativo y puede ser decorada*/Class Kitchen extiende el maestro {Cocina pública (Abstracthouse Abstractchouse) {Super (Abstracthouse); } public void dosomething () {super.dosomthing (); System.out.println ("Rol decorativo específico: Decoración aquí, decore una de la casa en una cocina, para que la casa pueda cocinar"); }}En el desarrollo real, la función de empaque de decorar el patrón juega un gran papel. Podemos hacer otras operaciones en el objeto sin cambiar el objeto original, lo que puede evitar que transformemos el objeto, pero al mismo tiempo podemos completar bien algunas operaciones.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.