阅读(314) 书签 (0)

AIGC提示词:编写中介者模式实现文档

2023-06-29 14:55 更新

使用场景: 设计模式实现

中文提示词

中介者模式:我需要一个能够减少对象之间的直接交互的中介者模式,希望文档能够详细、清晰地描述该模式的实现方式,并提供一些实用的代码示例和注意事项。

示例对话

ChatGPT3.5 设计模式实现

用户

中介者模式:我需要一个能够减少对象之间的直接交互的中介者模式,希望文档能够详细、清晰地描述该模式的实现方式,并提供一些实用的代码示例和注意事项。

AI模型(ChatGPT3.5)

中介者模式是一种行为设计模式,它允许你减少对象之间的直接交互,通过引入一个中介者对象,来协调对象之间的通信。中介者模式可以帮助我们降低对象之间的耦合度,使得系统更易于维护和扩展。


中介者模式的实现方式包括以下几个要素:


1. 中介者接口:定义中介者对象需要实现的方法。
2. 具体中介者:实现中介者接口,并负责协调对象之间的通信。
3. 抽象同事类:定义对象需要实现的方法,以及与中介者对象进行通信的方法。
4. 具体同事类:实现抽象同事类中定义的方法,同时持有一个中介者对象的引用,以便进行通信。


下面是一个简单的示例代码:


```python
## 定义中介者接口


from abc import ABCMeta, abstractmethod




class Mediator(metaclass=ABCMeta):


    @abstractmethod
    def send(self, message: str, colleague: 'Colleague') -> None:
        pass




## 具体中介者


class ConcreteMediator(Mediator):


    def __init__(self):
        self._colleague1 = None
        self._colleague2 = None


    def set_colleague1(self, colleague: 'Colleague') -> None:
        self._colleague1 = colleague


    def set_colleague2(self, colleague: 'Colleague') -> None:
        self._colleague2 = colleague


    def send(self, message: str, colleague: 'Colleague') -> None:
        if colleague == self._colleague1:
            self._colleague2.notify(message)
        else:
            self._colleague1.notify(message)




## 抽象同事类


class Colleague(metaclass=ABCMeta):


    def __init__(self, mediator: 'Mediator') -> None:
        self._mediator = mediator


    @abstractmethod
    def notify(self, message: str) -> None:
        pass




## 具体同事类


class ConcreteColleague1(Colleague):


    def notify(self, message: str) -> None:
        print('同事1得到消息:{}'.format(message))
        self._mediator.send(message, self)




class ConcreteColleague2(Colleague):


    def notify(self, message: str) -> None:
        print('同事2得到消息:{}'.format(message))
        self._mediator.send(message, self)




## 使用中介者模式


mediator = ConcreteMediator()


colleague1 = ConcreteColleague1(mediator)
mediator.set_colleague1(colleague1)


colleague2 = ConcreteColleague2(mediator)
mediator.set_colleague2(colleague2)


colleague1.notify('你好,同事2!')




---