Python 앱의 통신 혼란에 작별 인사

Feb 26 2023
Django, Flask, Pygame 및 PyQt에서 사용하는 이 패턴의 마법을 발견하십시오.
중재자 디자인 패턴은 중재자 개체를 통해 간접적으로 서로 통신할 수 있도록 하여 응용 프로그램 구성 요소 간의 결합을 줄이는 데 도움이 되는 동작 디자인 패턴입니다. 이 디자인 패턴을 사용하는 인기 있는 Python 라이브러리 이 디자인 패턴은 소프트웨어 개발에서 널리 사용되는 패턴이며 Python에는 이를 사용하는 인기 있는 라이브러리가 많이 있습니다.
Unsplash에 있는 Brett Jordan의 사진

중재자 디자인 패턴은 중재자 개체를 통해 간접적으로 서로 통신할 수 있도록 하여 응용 프로그램 구성 요소 간의 결합을 줄이는 데 도움이 되는 동작 디자인 패턴입니다.

이 디자인 패턴을 사용하는 인기 있는 Python 라이브러리

이 디자인 패턴은 소프트웨어 개발에서 널리 사용되는 패턴이며 Python에는 이를 사용하는 인기 있는 라이브러리가 많이 있습니다.

여기 몇 가지 예가 있어요.

  1. Django 신호 : Django 신호는 Django 웹 프레임워크의 일부로, 신호를 보내고 받을 수 있도록 하여 응용 프로그램의 구성 요소를 분리하는 방법을 제공합니다. 신호 프레임워크는 중재자 디자인 패턴을 사용하여 구성 요소 간의 통신을 관리합니다.
  2. 파이게임 : 파이게임은 비디오 게임을 만들기 위한 파이썬 모듈 세트입니다. 파이게임은 Mediator 패턴을 사용하여 게임의 그래픽 및 입력 처리에서 게임 논리를 분리합니다. Pygame의 Mediator 객체는 이벤트 대기열이라고 하며 게임의 이벤트 흐름을 관리합니다.
  3. PyQt : PyQt는 Qt 애플리케이션 프레임워크용 Python 바인딩 세트입니다. Qt 프레임워크는 Mediator 패턴을 광범위하게 사용하여 사용자 인터페이스의 다양한 구성 요소를 분리합니다. PyQt는 클래스와 같은 중재자 패턴을 구현하는 일련의 클래스를 제공합니다 QSignalMapper.
  4. Flask-Signals : Flask-Signals는 Flask 응용 프로그램에 신호를 추가하는 간단한 방법을 제공하는 Flask 확장입니다. Flask-Signals는 중재자 패턴을 사용하여 응용 프로그램의 다양한 부분을 분리하고 신호를 등록하고 발송하는 방법을 제공합니다.
  5. PyMediator : PyMediator는 Mediator 패턴의 간단한 구현을 제공하는 Python 라이브러리입니다. 중재자 개체를 만들고 서로 통신해야 하는 구성 요소를 등록할 수 있습니다. 중재자 개체를 통해 구성 요소 간에 메시지를 보내는 방법을 제공합니다.

작동 방식

Python에서는 클래스와 메서드를 사용하여 중재자 패턴을 구현할 수 있습니다.

다음은 예입니다.

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

클래스 Component는 응용 프로그램의 개별 구성 요소를 나타냅니다. 메소드 는 중재자의 메소드 send를 호출하여 중재자에게 메시지를 보냅니다 notify. 이 receive메서드는 중재자로부터 메시지를 받고 메시지를 콘솔에 출력합니다.

메인 함수에서 중재자와 두 개의 구성 요소를 만듭니다. 메서드를 사용하여 중재자에 두 구성 요소를 등록합니다 register_component. send그런 다음 중재자에게 메시지를 보내는 구성 요소 중 하나의 메서드를 호출합니다 . 중재자는 콘솔에 메시지를 인쇄하는 다른 구성 요소에 알립니다.

이것은 단순한 예일 뿐이지만 중개자 패턴은 여러 구성 요소가 분리된 방식으로 서로 통신해야 하는 보다 복잡한 애플리케이션에 유용할 수 있습니다.

시간 내 주셔서 감사합니다!

자유롭게 공유하고 팔로우하세요!