23种设计模式介绍(Python示例讲解)(32)
2023-04-30 来源:飞速影视
代码解释:
在上面的示例中,User 类表示同事类,ChatRoom 类表示中介者。每个 User 对象都有一个指向 ChatRoom 对象的引用,以便与中介者进行通信。当一个用户发送消息时,它会将消息发送到中介者,然后中介者会将消息广播给其他用户。
这个简单的实现演示了中介者模式的基本思想,尽管它没有实现一个完整的中介者模式。实际上,中介者模式通常需要更复杂的实现,以便处理更复杂的交互关系。
6、备忘录模式(Memento)
备忘录模式(Memento)是一种行为型设计模式,它允许在不暴露对象实现细节的情况下保存和恢复对象的内部状态。备忘录模式的核心是备忘录类,它用于存储对象的状态信息,同时提供给其他类访问状态信息的接口。
备忘录模式包括三个核心角色:
Originator(发起人):它是需要保存状态的对象。它创建备忘录对象来存储内部状态,并可以使用备忘录对象来恢复其先前的状态。Memento(备忘录):它是存储发起人对象内部状态的对象。备忘录对象由发起人创建,并由发起人决定何时读取备忘录以恢复其先前的状态。Caretaker(管理者):它负责备忘录的安全保管。它只能将备忘录传递给其他对象,不能修改备忘录的内容。
在 Python 中,备忘录模式通常使用 Python 的内置 copy 模块和 dict 属性来实现。下面是一个简单的备忘录模式的 Python 实现:
import copy# 发起人类class Originator: def __init__(self): self._state = None def set_state(self, state): print("设置状态为:", state) self._state = state def create_memento(self): print("创建备忘录") return Memento(copy.deepcopy(self._state)) def restore_memento(self, memento): print("恢复备忘录") self._state = memento.get_state() def show_state(self): print("当前状态为:", self._state)# 备忘录类class Memento: def __init__(self, state): self._state = state def get_state(self): return self._state# 管理者类class Caretaker: def __init__(self): self._mementos = [] def add_memento(self, memento): self._mementos.append(memento) def get_memento(self, index): return self._mementos[index]# 测试if __name__ == "__main__": originator = Originator() caretaker = Caretaker() originator.set_state("状态1") caretaker.add_memento(originator.create_memento()) originator.set_state("状态2") caretaker.add_memento(originator.create_memento()) originator.set_state("状态3") originator.show_state() originator.restore_memento(caretaker.get_memento(1)) originator.show_state() originator.restore_memento(caretaker.get_memento(0)) originator.show_state()
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号