• Python: Mediator Pattern


    DuMediator.py

    # 中介者模式  Mediator Pattern
    
    import sys
    
    # ParticipantReference:
    class User(object):
        def __init__(self, med, name):
            self.mediator = med
            self.name = name
    
        def send(self, msg):
            pass
    
        def receive(self, msg):
            pass
    
    
    # The Mediator:
    class ChatMediator(object):
        def __init__(self):
            self.users = []
    
        def add_user(self, user):
            self.users.append(user)
    
        def send_message(self, msg, user):
            for u in self.users:
                if u != user:
                    u.receive(msg)
    
    # Participant
    class ConcreteUser(User):
    
        def send(self, msg):
            print(self.name + ": 发送消息: " + msg)
            self.mediator.send_message(msg, self)
    
        def receive(self, msg):
            print(self.name + ": 收到的消息: " + msg)
    
    
    # geovindu: two
    class ChatRoom(object):
        '''Mediator class.'''
    
        def __init__(self):
            self.users = []
    
        def add_user(self, user):
            self.users.append(user)
    
        def displayMessage(self, user, message):
            print("[{} 说]: {}".format(user, message))
    
    
    class User(object):
        '''A class whose instances want to interact with each other.'''
    
        def __init__(self, name):
            self.name = name
            self.chatRoom = ChatRoom()
    
        def sendMessage(self, message):
            self.chatRoom.displayMessage(self, message)
    
        def __str__(self):
            return self.name
    

    main.py 调用

    # 中介者模式  Mediator Pattern
    mediator = DuMediator.ChatMediator()
    userDu = DuMediator.ConcreteUser(mediator,"GeovinDu")
    userDu2 = DuMediator.ConcreteUser(mediator,"geovindu")
    userDu3 = DuMediator.ConcreteUser(mediator,"涂聚文")
    userDu4 = DuMediator.ConcreteUser(mediator,"geovin")
    
    mediator.add_user(userDu)
    mediator.add_user(userDu2)
    mediator.add_user(userDu3)
    mediator.add_user(userDu4)
    
    userDu.send("Hello 2024 程序员节节日快乐.")
    print("\n")
    GeovinDu = DuMediator.User("GeovinDu")
    GeovinDu2 = DuMediator.User("geovindu")
    GeovinDu3 = DuMediator.User("涂聚文")
    GeovinDu4 = DuMediator.User("geovin")
    GeovinDu.sendMessage("你好,见到你真高兴.程序员节节日快乐")
    GeovinDu2.sendMessage("你好,见到你真高兴.程序员节节日快乐")
    GeovinDu3.sendMessage("你好,见到你真高兴.程序员节节日快乐")
    GeovinDu4.sendMessage("你好,见到你真高兴.程序员节节日快乐")
    

    输出:

    GeovinDu: 发送消息: Hello 2024 程序员节节日快乐.
    geovindu: 收到的消息: Hello 2024 程序员节节日快乐.
    涂聚文: 收到的消息: Hello 2024 程序员节节日快乐.
    geovin: 收到的消息: Hello 2024 程序员节节日快乐.
    
    
    [GeovinDu 说]: 你好,见到你真高兴.程序员节节日快乐
    [geovindu 说]: 你好,见到你真高兴.程序员节节日快乐
    [涂聚文 说]: 你好,见到你真高兴.程序员节节日快乐
    [geovin 说]: 你好,见到你真高兴.程序员节节日快乐
    

     

  • 相关阅读:
    [转]Convolution Neural Network (CNN) 原理与实现
    [转]深度学习CNN研究反向
    [转]一张图看懂:Google AlphaGo的原理、弱点
    [转]前馈型神经网络与反馈型神经网络的区别
    [转]认知机和神经认知机
    [转]技术向:一文读懂卷积神经网络CNN
    PHP 日期格式化 参数参考
    PHP MAIL DEMO(程序代码直接发送邮件)
    PHP上传文件DEMO
    PDO事务管理DEMO
  • 原文地址:https://www.cnblogs.com/geovindu/p/16820270.html
Copyright © 2020-2023  润新知