设计模式:备忘录与观察者模式解析
1. 实践问题引入
1.1 银行客服沟通机制设计
在一些商业银行,客服代表使用在线聊天应用处理现有和潜在客户的咨询。在高峰时段,每个代表可能需要同时与多个客户合作。可以设计一个中介对象(Mediator),置于不同的用户对象(User)和代表对象(Representative)之间,以实现这种沟通机制。
1.2 其他实践问题
- 设计并实现一个 Java 小程序,允许用户设计定制婚纱。应显示默认设置的礼服预览,用户能够从一组不同的领口和袖子类型中进行选择,每次选择后预览图像应更新,并且用户能够撤销选择以返回上一个选择,同时预览也相应更新,可应用备忘录模式设计撤销操作。
- 考虑一个简单的购物车应用程序,即使用户注销后也能记住购物车内容。下次用户登录网站时,购物车应显示之前选择的商品,用户可以在新会话中继续购物,思考如何使用备忘录模式来保存和恢复未完成订单的状态。
2. 备忘录模式(Memento)
2.1 模式描述
对象的状态可以定义为其属性在任何给定时间点的值。备忘录模式用于设计一种机制,以捕获和存储对象的状态,以便在需要时将对象恢复到之前的状态,类似于撤销操作。该模式可以在不暴露对象内部结构的情况下实现这一点。需要捕获状态的对象称为发起者(Originator)。当客户端想要保存发起者的状态时,它向发起者请求当前状态,发起者将恢复其状态所需的所有属性存储在一个单独的对象(称为备忘录,Memento)中,并将其返回给客户端。备忘录对象必须对除发起者之外的所有对象隐藏发起者的变量值,即保护其内部状态不被其他对