Dì addio al caos comunicativo nella tua app Python

Feb 26 2023
Scopri la Magia di questo pattern utilizzato da Django, Flask, Pygame e PyQt.
Il modello di progettazione del mediatore è un modello di progettazione comportamentale che aiuta a ridurre l'accoppiamento tra i componenti di un'applicazione consentendo loro di comunicare tra loro indirettamente tramite un oggetto mediatore. Librerie Python popolari che utilizzano questo modello di progettazione Questo modello di progettazione è un modello ampiamente utilizzato nello sviluppo del software e Python ha molte librerie popolari che lo utilizzano.
Foto di Brett Jordan su Unsplash

Il modello di progettazione del mediatore è un modello di progettazione comportamentale che aiuta a ridurre l'accoppiamento tra i componenti di un'applicazione consentendo loro di comunicare tra loro indirettamente tramite un oggetto mediatore.

Librerie Python popolari che utilizzano questo modello di progettazione

Questo modello di progettazione è un modello ampiamente utilizzato nello sviluppo del software e Python ha molte librerie popolari che lo utilizzano.

Ecco alcuni esempi:

  1. Django Signals : Django Signals è una parte del framework web Django che fornisce un modo per disaccoppiare i componenti di un'applicazione consentendo loro di inviare e ricevere segnali. Il framework Signals utilizza il modello di progettazione Mediator per gestire la comunicazione tra i componenti.
  2. Pygame : Pygame è un insieme di moduli Python per la creazione di videogiochi. Pygame utilizza il modello Mediator per disaccoppiare la logica del gioco dalla grafica del gioco e dalla gestione degli input. L'oggetto Mediator in Pygame è chiamato coda degli eventi e gestisce il flusso degli eventi nel gioco.
  3. PyQt : PyQt è un insieme di collegamenti Python per il framework dell'applicazione Qt. Il framework Qt utilizza ampiamente il modello Mediator per disaccoppiare i vari componenti dell'interfaccia utente. PyQt fornisce un insieme di classi che implementano il modello Mediator, come la QSignalMapperclasse.
  4. Flask-Signals : Flask-Signals è un'estensione Flask che fornisce un modo semplice per aggiungere segnali alla tua applicazione Flask. Flask-Signals utilizza il modello Mediator per disaccoppiare le varie parti dell'applicazione e fornisce un modo per registrare e inviare segnali.
  5. PyMediator : PyMediator è una libreria Python che fornisce una semplice implementazione del pattern Mediator. Ti consente di creare un oggetto mediatore e registrare i componenti che devono comunicare tra loro. Fornisce un modo per inviare messaggi tra i componenti tramite l'oggetto mediatore.

Come funziona

In Python, puoi implementare il pattern del mediatore usando classi e metodi.

Ecco un esempio:

class Mediator:
    def __init__(self):
        self.components = []

    def register_component(self, component):
        self.components.append(component)

    def notify(self, sender):
        for component in self.components:
            if component != sender:
                component.receive(sender)

class Component:
    def __init__(self, mediator):
        self.mediator = mediator

    def send(self):
        self.mediator.notify(self)

    def receive(self, sender):
        print(f"Received message from {sender}")

if __name__ == '__main__':
    mediator = Mediator()
    component1 = Component(mediator)
    component2 = Component(mediator)
    mediator.register_component(component1)
    mediator.register_component(component2)

    component1.send() # Sends message to the mediator

La Componentclasse rappresenta i singoli componenti dell'applicazione. Il sendmetodo invia un messaggio al mediatore chiamando il notifymetodo del mediatore. Il receivemetodo riceve il messaggio dal mediatore e stampa un messaggio nella console.

Nella funzione principale, creiamo un mediatore e due componenti. Registriamo le due componenti presso il mediatore utilizzando il register_componentmetodo. Quindi chiamiamo il sendmetodo di uno dei componenti, che invia un messaggio al mediatore. Il mediatore avvisa l'altro componente, che stampa un messaggio sulla console.

Questo è solo un semplice esempio, ma il modello mediatore può essere utile per applicazioni più complesse in cui più componenti devono comunicare tra loro in modo disaccoppiato.

Grazie per il tuo tempo!

Sentiti libero di , condividi e segui!