python发布订阅者模式(超简版)1、⽣产者基类(⽗类)
class BaseProducer(object):
'''
⽣产者
'''
def __init__(self,name):
'''
初始化⽣产对象
:param name:⽣产名称
'''
self.name = name
self.number = 0
self.object = None
def action(self):
'''
抽象⽅法:⽣产⽅法
:return:
'''
pass
def action(self,number,object):
'''
带参的⽣产⽅法:根据数量和对象⽣产不同的产品
:
param number:⽣产数量
:param object:⽣产产品
:return:
'''
self.number = number
self.object = object
while number > 0:
obj = object()
list.append(obj)
number -= 1
return list
def __str__(self):
'''
⽣产者的toString⽅法
:return:
'''
return "⽣产名称:"+self.name+"\t⽣产数量:"+str(self.number)+"\t⽣产对象:"+str(self.object)
2、消费者基类(⽗类)
class BaseConsumer(object):
'''
消费者
'''
def __init__(self,name):
'''
初始化消费者对象
:param name:消费者名称
'''
self.name = name
def action(self,object):
'''
消费者消费动作
:param object:消费物品
:return:
'''
pass
3、根据业务模拟编写⽣产者消费者
import Queue
from base_producer import BaseProducer
from base_consumer import BaseConsumer
class WebProducer(BaseProducer):
# def __init__(self,name):
#    self.name = name
def action(self, number, object):
'''
根据数量和对象⽣产不同的产品
:param number:⽣产数量
:param object:⽣产产品
:return:
'''
self.number = number
list = []
while number > 0:
obj = object()
list.append(obj)
number -= 1
return list
class WebConsumer(BaseConsumer):
def __init__(self, name):
self.name = name
def action(self, object):
for i in object:
# 打印输出⽣产者
print(i)
class A():
'''
⽤于测试的具体消费类
'''
pass
if __name__ == '__main__':
# 定义⼀个队列对象,⽤于中间缓存
queue = Queue.Queue()
# new ⼀个⽣产者
producer = WebProducer("⽣产者1")
# 执⾏⽣产动作,放回产品列表
list = producer.action(10, A)
print(producer.__str__())
# 把⽣产的产品放到队列中
queue.put(list)
# new ⼀个消费者
consumer = WebConsumer("消费者1")
# 消费者从队列中消费产品
list = ()
print(list)
if None is not list:python单例模式
consumer.action(list)
else:
print("No producet consumption for the time being!")
4、运⾏结果
5、总结
其实发布订阅者模式就是⽣产者消费者模式,
区别在于发布订阅者多了⼀个中间队列,
⽣产者⽣产产品,放到队列中,消费者从队列中取出产品消费。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。