云快卖,提供专业好用的外卖系统、跑腿系统和同城信息系统,公众号+小程序+APP多端适用。
(每日一题)基于观察者模式的美食产生器场景
2023-06-09 09:06:11 云快卖

A)观察者模式的模式模型:观察者模式是一种行为设计模式,它容许对象在发生状态变化时通知其他对象。在观察者模式中,有两种类型的对象:主题和观察者。主题是状态变化的对象,观察者是接收主题状态变化通知的对象。当主题状态发生变化时,它会通知所有的观察者,让它们才能更新自己的状态。观察者模式的模式模型包括以下几个角色:1.具象主题():定义了主题的插口,包括添加、删除和通知观察者的技巧。2.具体主题():实现了具象主题插口,维护了一个观察者列表,并在状态发生变化时通知观察者。3.具象观察者():定义了观察者的插口,包括更新状态的技巧。4.具体观察者():实现了具象观察者插口,保存了一个指向具体主题的引用,并在接收到通知时更新自己的状态。B)场景实现:下边是一个基于观察者模式的小吃形成器场景实现的示例代码:```#具象主题class:def(self):self.=[]def(self,):self..()def(self,):self..()def(self,food):forinself.:.(food)#具体主题class():def(self):super().()def(self):#随机形成一道小吃food=.(['广味火腿饭','广州鸡饭','美味烤蚝','雪域冰城糖水'])#通知所有观察者self.(food)#具象观察者class:def(self,food):pass#具体观察者class():def(self,name,):self.name=.=(self,food):iffood==self.:print(f'{self.name}:我喜欢的{food}出锅了!')else:print(f'{self.name}:我不喜欢的{food}出锅了。

')#场景实现if=='':#创建迷你小吃形成器=()#创建中学生观察者=('小明','广味火腿饭')=('小红','广州鸡饭')=('小刚','美味烤蚝')=('小芳','雪域冰城糖水')#添加观察者.().().().()#形成小吃.()```在前面的代码中,我们定义了一个具象主题``,它包括添加、删除和通知观察者的技巧。

之后我们定义了一个具体主题``,它承继了具象主题,并实现了随机形成小吃的技巧。当形成小吃时微信点餐,它会通知所有的观察者。我们还定义了一个具象观察者``,它定义了更新状态的技巧。之后我们定义了一个具体观察者``,它承继了具象观察者,并实现了更新状态的技巧。当收到通知时,它会判定是否是自己喜欢的小吃,若果是就欢呼一声,否则就不理会。在场景实现中,我们创建了一个迷你小吃形成器``,并添加了四个中学生观察者。之后我们调用`.()`方式形成小吃微信点餐,这时所有的观察者就会收到通知,并按照自己的口味判定是否喜欢这道小吃。

免责声明:部分文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快为您处理。

云快卖

留言咨询

×