Método del mediador: patrón de diseño de Python

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.

Problem-Mediator-Method

Problema-Mediador-Método

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.

Solution-Mediator-method

Solución-mediador-método

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:

Mediator-method-UML-Diagram

Mediador-método-UML-Diagrama

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *