设计模式面试题, 什么是备忘录模式,一般用在什么场景?
设计模式面试题, 什么是备忘录模式,一般用在什么场景?
QA
Step 1
Q:: 什么是备忘录模式?
A:: 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不破坏封装性的前提下捕获并保存一个对象的内部状态,以便在将来可以将对象恢复到以前的状态。备忘录模式涉及三个核心角色:Originator(发起人),负责创建和恢复备忘录;Memento(备忘录),存储对象的状态;Caretaker(管理者),负责保存和管理备忘录的生命周期。
Step 2
Q:: 备忘录模式一般用在什么场景?
A:: 备忘录模式适用于需要保存和恢复对象历史状态的场景,例如:实现撤销(Undo)操作的功能,游戏中的存档功能,事务管理系统中的回滚操作等。当你需要记录对象状态以便以后可以恢复,但又不想暴露对象的内部实现时,备忘录模式非常有用。
Step 3
Q:: 备忘录模式如何保证不破坏封装性?
A:: 备忘录模式通过将对象的状态保存在一个独立的Memento对象中,而不是直接暴露对象的内部状态,从而保持封装性。Originator类可以访问备忘录的内容并恢复状态,而其他类(如Caretaker)只能存储和传递备忘录,而不能查看其内容。
Step 4
Q:: 如何在Java中实现备忘录模式?
A:: 在Java中实现备忘录模式通常涉及创建三个类:Originator类负责创建和恢复Memento,Memento类保存对象的状态(通常是一些私有字段),Caretaker类负责管理Memento的生命周期。通常,Memento类是Originator的内部类,以确保只有Originator可以访问它的内容。
Step 5
Q:: 备忘录模式的优缺点有哪些?
A:: 优点:1. 通过保存对象状态,可以实现撤销操作和状态恢复功能;2. 保持封装性,不暴露对象的内部状态。缺点:1. 存储多个状态会消耗大量内存;2.
需要小心管理备忘录的生命周期,以避免不必要的资源消耗。