Mediator Method es un patrón de diseño de comportamiento que nos permite reducir las dependencias desordenadas entre los objetos. En un entorno mediador, los objetos toman la ayuda de los objetos mediadores para comunicarse entre sí. Reduce el acoplamiento al reducir las dependencias entre los objetos que se comunican. El mediador funciona como un enrutador entre objetos y puede tener su propia lógica para proporcionar una forma de comunicación.
Componentes de diseño:
- Mediador: Define la interfaz para la comunicación entre objetos colega.
- Mediador concreto: implementa la interfaz del mediador y coordina la comunicación entre objetos colega.
- Colega: Define la interfaz para la comunicación con otros colegas
- Colega Concreto: Implementa la interfaz de colega y se comunica con otros colegas a través de su mediador.
Problema sin usar el método del mediador
Imagina que vas a ingresar en uno de los cursos de élite que ofrece GeeksforGeeks , como DSA, SDE y STL . Inicialmente, son muy pocos los estudiantes que se acercan a incorporarse a estos cursos. Inicialmente, el desarrollador puede crear objetos y clases separados para la conexión entre los estudiantes y los cursos, pero a medida que los cursos se vuelven famosos entre los estudiantes, se vuelve difícil para los desarrolladores manejar una cantidad tan grande de subclases y sus objetos.
Solución utilizando el método del mediador
Ahora comprendamos cómo un desarrollador profesional manejará tal situación utilizando el patrón de diseño Mediator . Podemos crear una clase mediadora separada denominada Curso y una Clase de usuario con la que podemos crear diferentes objetos de la clase Curso. En el método principal, crearemos un objeto separado para cada estudiante y dentro de la clase Usuario, crearemos el objeto para la clase Curso que ayuda a prevenir el código desordenado.
Python3
class Course(object): """Mediator class.""" def displayCourse(self, user, course_name): print("[{}'s course ]: {}".format(user, course_name)) class User(object): '''A class whose instances want to interact with each other.''' def __init__(self, name): self.name = name self.course = Course() def sendCourse(self, course_name): self.course.displayCourse(self, course_name) def __str__(self): return self.name """main method""" if __name__ == "__main__": mayank = User('Mayank') # user object lakshya = User('Lakshya') # user object krishna = User('Krishna') # user object mayank.sendCourse("Data Structures and Algorithms") lakshya.sendCourse("Software Development Engineer") krishna.sendCourse("Standard Template Library")
Diagrama UML
El siguiente es el diagrama UML para el método del mediador:
Ventajas
- Principio de responsabilidad única: es posible extraer las comunicaciones entre los diversos componentes con el Método del mediador en un solo lugar que es más fácil de mantener.
- Principio abierto/cerrado: es fácil introducir nuevos mediadores sin perturbar el código de cliente existente.
- Permite Herencia: Podemos reutilizar los componentes individuales de los mediadores como sigue la Herencia
- Pocas subclases: el mediador limita la subclasificación ya que un mediador localiza el comportamiento que de otro modo se alteraría entre los diversos objetos.
Desventajas
- Centralización: Centraliza completamente el control porque el patrón mediador cambia complejidad de interacción por complejidad en el mediador.
- Objeto de Dios: Un Mediador puede convertirse en un Objeto de Dios (un objeto que sabe demasiado o hace demasiado).
- Complejidad aumentada: la estructura del objeto mediador puede volverse demasiado compleja si le ponemos demasiada lógica.
Aplicabilidad
- Reduzca el número de subclases: cuando se haya dado cuenta de que ha creado muchas subclases innecesarias, es preferible utilizar el método Mediator para evitar estas subclases innecesarias.
- Controlador de tráfico aéreo: el controlador de tráfico aéreo es un gran ejemplo de un patrón de mediador en el que la sala de control del aeropuerto funciona como mediador para la comunicación entre diferentes vuelos.
Lectura adicional: método de mediador en Java
Publicación traducida automáticamente
Artículo escrito por chaudhary_19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA