Descripción general
El modo decorativo es la función de extender los objetos de manera transparente al cliente, y es una alternativa a las relaciones de herencia. En otras palabras, el cliente no cree que haya ninguna diferencia entre el objeto antes y después de la decoración. El modo decorativo puede ampliar la función del objeto sin crear más subclases. La clave del modo decorativo es que esta extensión es completamente transparente.
Estructura del patrón
Diagrama de clase UML:
Caracteres en modo de decoración:
Rol de componente abstracto (proyecto): ofrece una interfaz para regular objetos que están listos para recibir responsabilidades adicionales.
Rol de componente específico (empleo): defina una clase que recibirá responsabilidades adicionales
Rol decorativo (administrador): contiene una instancia de un objeto componente y define una interfaz consistente con la interfaz de componente abstracto
Rol decorativo específico (gerente, gerenteb): responsable de "pegar" la responsabilidad adicional a los objetos componentes
Ejemplo de código
Entrevista de paquete; Proyecto de interfaz {void docoding ();} clase empleo implementa el proyecto {@Override public void docoding () {System.out.println ("La ingeniería es programación ..."); }} Class Manager implementa el proyecto {Proyecto de proyecto privado; Public Manager (Proyecto Proyecto) {this.project = Project; } @Override public void Docoding () {startNeWWork (); Project.docoding (); } public void startNewWork () {}} class ManagerA extiende Manager {public ganatera (proyecto Project) {super (proyecto); } @Override public void startNewwork () {System.out.println ("El gerente de desarrollo inicia un nuevo plan de trabajo"); }} class ManagerB extiende Manager {public ManagerB (Proyecto Proyecto) {Super (Proyecto); } @Override public void startNewwork () {System.out.println ("El administrador de pruebas inicia un nuevo plan de trabajo"); }} public class Mantest {public static void main (string arg []) {Project Project = new Employe (); Project ManagerA = New Managera (proyecto); Project ManagerB = New ManagerB (proyecto); gerente.docoding (); gerenteb.docoding (); }} Ventajas y desventajas del modo decorativo:
ventaja:
El propósito del modo decorativo y la herencia es extender la función del objeto, pero el modo decorativo puede proporcionar más flexibilidad que la herencia. El modo decorativo permite que el sistema decida dinámicamente "pegar" una "decoración" necesaria, y la relación de herencia es diferente. La relación de herencia es estática y se decide antes de que se ejecute el sistema.
Al utilizar diferentes categorías decorativas específicas y combinaciones de estas categorías decorativas, los diseñadores pueden crear muchas combinaciones diferentes de comportamiento.
defecto:
Debido al uso de patrones decorativos, se puede requerir una menor cantidad de clases que usar relaciones de herencia. El uso de menos clases ciertamente hace que el diseño sea más fácil de realizar. Sin embargo, por otro lado, el uso de patrones decorativos produce más objetos que usar relaciones de herencia. Más objetos pueden dificultar los errores, especialmente porque todos se ven similares.
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.