Modelo intermediario
El diseño orientado a objetos fomenta la distribución de comportamientos entre los objetos, lo que puede conducir a muchas conexiones entre objetos. En el peor de los casos, cada objeto necesita conocer todos los demás objetos.
Aunque dividir un sistema en muchos objetos puede mejorar la reutilización, el aumento en los objetos interconectados reducirá su reutilización. Una gran cantidad de relaciones de conexión hace que sea imposible que un objeto funcione sin la ayuda de otros objetos (el sistema se manifiesta como un todo indivisible ), y es difícil hacer cambios importantes en el comportamiento del sistema en este momento. Debido a que el comportamiento se distribuye entre muchos objetos, el resultado es que se deben definir muchas subclases para personalizar el comportamiento del sistema. Por lo tanto, introdujimos el mediador del objeto mediador :
A través del objeto intermediario, el sistema de la estructura de la malla puede transformarse en una estructura de estrella centrada en el intermediario . Cada objeto específico ya no tiene una relación directa con otro objeto, pero está mediado a través del objeto intermediario. La introducción del objeto intermediario también hace que la estructura del sistema no experimente una gran cantidad de modificaciones debido a la introducción de nuevos objetos.
Modo mediador: también conocido como modo mediador , utiliza un objeto mediador para encapsular la interacción de una serie de objetos, de modo que cada objeto no necesita mostrarse y referenciarse entre sí, lo que afloja el acoplamiento y cambia sus interacciones de forma independiente :
(Fuente de la imagen: Patrón de diseño: la base del software reutilizable orientado a objetos) Consejos: cada colega solo conoce la existencia de mediador , y no necesita saber si existen otros colegas (o cómo desacoplarlos). Solo necesita enviar un mensaje al mediador, y luego reenviarlo a otros colegas ( el mediador almacena todas las relaciones de colegas , y solo el mediador sabe cuántos/qué colegas hay allí).
Implementación del modo
Las Naciones Unidas hacia las declaraciones de varios países y media las relaciones con cada país:
Los estados envían y reciben mensajes al Consejo de Seguridad de la ONU, que "apropiadamente" reenvía las solicitudes entre los estados para la acción de colaboración:
Colega
Clase de colega abstracto, defina los métodos públicos de cada colega:
/** * @author Jifang * @since 16/8/28 4:22 PM. */Public Abstract Class Country {mediador de UnitedNations protegido; nombre de cadena privada; Public Country (Mediator de Unitednations, nombre de cadena) {this.Mediator = Mediator; this.name = name; } public String getName () {nombre de retorno; } abstracto de abstracto protegido declarar (string msg); Recibe sin huecos abstractos protegidos (string msg);}--------------------------------------------------------------------------------
Concreta
Colegas específicos:
• Cada clase de colega conoce su objeto mediador.
• Cada objeto colega se comunica con su intermediario cuando necesita comunicarse con otros colegas.
Clase USA extiende el país {Public USA (Unitednations Mediator, String Name) {super (mediador, nombre); } @Override public void declarar (string msg) {mediator.declare (this, msg); } @Override public void recibe (string msg) {system.out.println ("Estados Unidos recibido: [" + msg + "]"); }} class Iraq extiende el país {public Iraq (mediador Unitednations, nombre de cadena) {super (mediador, nombre); } @Override public void declarar (string msg) {mediator.declare (this, msg); } @Override public void recibe (string msg) {system.out.println ("Iraq recibido: [" + msg + "]"); }} clase China extiende el país {Public China (Mediator de Unitednations, nombre de cadena) {super (mediador, nombre); } @Override public void declarar (string msg) {mediator.declare (this, msg); } @Override public void recibe (string msg) {system.out.println ("China recibió: [" + msg + "]"); }}--------------------------------------------------------------------------------
Mediador
Mediador abstracto: Defina una interfaz para comunicarse con objetos colega:
Public Abstract Class Unitednations {Lista protegida <ManTional> países = new LinkedList <> (); Registro público nulo (país país) {países.Add (país); } public void eliminar (país país) {países.remove (país); } abstracto protegido declare (país país, string msg);}--------------------------------------------------------------------------------
Hormigón
Intermediario específico:
• Comprender y mantener a sus colegas individuales;
• Realice el comportamiento colaborativo coordinando a cada objeto de colega (reciba mensajes de colegas y emita órdenes a colegas específicos).
Class UnitednationsSecurityCouncil extiende Unitednations { / ** * El Consejo de Seguridad media en el medio * * @param país * @param msg * / @override void declare (country country, string msg) {for (country toCountry: países) {if (toCountry.equals (country)) {string name.getName (); toCountry.Receive (nombre + "Diga pacíficamente:" + msg); }}}} Si no hay extensión, el mediador se puede combinar con el hormigonador en uno.
•Cliente
Cliente de clase pública {@test public void Client () {Unitednations Mediator = new UnitednationsSecurityCouncil (); País USA = New USA (mediador, "EE. UU."); País China = nueva China (mediador, "China"); País iraq = nuevo Iraq (mediador, "Iraq"); mediador.register (EE. UU.); mediador. Registrar (China); mediador.register (Iraq); EE. UU. System.out.println ("----------------"); China. Declare ("¡Condenamos firmemente!"); System.out.println ("-----------------------"); Iraq.Declare ("¡Vamos, ven lastimados mutuamente!"); }}--------------------------------------------------------------------------------
resumen
La aparición de mediador reduce el acoplamiento entre cada universidad, lo que permite que el colega y el mediador se cambien y reutilicen de forma independiente. Debido a que los objetos colaboran, la mediación se toma como un concepto independiente y está encapsulado en un objeto, el enfoque de atención se desplaza del comportamiento de cada uno de los objetos en sí a la interacción entre ellos, para que el sistema pueda verse desde una perspectiva más macro.
•aplicabilidad
El modelo intermediario es fácil de aplicar en el sistema y se usa fácilmente en el sistema. Cuando aparece un grupo de objetos complejos "muchos a muchos" en el sistema, no se apresure a usar el intermediario. Es mejor reflexionar primero sobre si el diseño del sistema es razonable. Dado que el hormigonador controla la centralización, la complejidad de la interacción se convierte en la complejidad del intermediario, lo que hace que el intermediario sea más complejo que cualquier concreta. Se recomienda utilizar el modelo intermediario en las siguientes situaciones:
◦ Un grupo de objetos se comunica de una manera bien definida pero compleja. Las interdependencias resultantes son confusas y difíciles de entender.
◦ Un objeto se refiere a muchos otros objetos y se comunica directamente con estos objetos, lo que dificulta la reutilización del objeto.
◦ Desea personalizar un comportamiento distribuido entre múltiples clases, pero no quiere generar demasiadas subclases.
• Modos relacionados
◦ La facade es diferente de los mediadores, ya que abstrae un subsistema de objetos, proporcionando así una interfaz más conveniente. Su protocolo es unidireccional, es decir, los objetos de la fachada hacen solicitudes a esta clase del subsistema, pero de lo contrario no. Por el contrario, el mediador proporciona comportamientos de colaboración que no son compatibles o no pueden ser respaldados por cada objeto universitario, y el protocolo es multi-direccional.
◦ El colega puede comunicarse con mediador utilizando el modo Observador.
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.