Python 设计模式 — 行为型模式 — 中介者模式

Posted 范桂飓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 设计模式 — 行为型模式 — 中介者模式相关的知识,希望对你有一定的参考价值。

目录

文章目录

中介者模式

中介者模式,将其他对象之间的交互装在中介者对象中,达到松耦合、隐式引用、独立变化。

中介者模式与代理模式有相似之处。但是代理模式是结构性模式,侧重于对对象调用的接口控制;而中介者模式是行为性模式,解决对象与对象之间相互调用的行为问题。

应用场景

  • 系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。
  • 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

代码示例

以生产者和消费者之间的销售作为一个中介者,用对象来表示生产和购买及流通这个过程。

class Consumer:
    """消费者类"""

    def __init__(self, product, price):
        self.name = "消费者"
        self.product = product
        self.price = price

    def shopping(self, name):
        """买东西"""
        print("向 购买 价格内的 产品".format(name, self.price, self.product))


class Producer:
    """生产者类"""
    def __init__(self, product, price):
        self.name = "生产者"
        self.product = product
        self.price = price

    def sale(self, name):
        """卖东西"""
        print("向 销售 价格的 产品".format(name, self.price, self.product))


class Mediator:
    """中介者类"""

    def __init__(self):
        self.name = "中介者"
        self.consumer = None
        self.producer = None

    def sale(self):
        """进货"""
        self.consumer.shopping(self.producer.name)

    def shopping(self):
        """出货"""
        self.producer.sale(self.consumer.name)

    def profit(self):
        """利润"""
        print('中介净赚:'.format((self.consumer.price - self.producer.price )))

    def complete(self):
        self.sale()
        self.shopping()
        self.profit()


if __name__ == '__main__':
    consumer = Consumer('手机', 3000)
    producer = Producer("手机", 2500)
    mediator = Mediator()
    mediator.consumer = consumer
    mediator.producer = producer
    mediator.complete()

以上是关于Python 设计模式 — 行为型模式 — 中介者模式的主要内容,如果未能解决你的问题,请参考以下文章

行为型模式:中介者模式

手撸golang 行为型设计模式 中介者模式

设计模式——行为型模式之中介者模式

设计模式-行为型模式讲解三(观察者状态中介者)

行为型模式-中介者模式

20行为型模式之中介者模式