简介
备忘录模式,百度了很多文章,大多都是说在不违背对象封装完整性的前提下,保存对象的状态,然后可以进行状态的回滚,因此又称为快照模式。
但是个人又有一些小疑问,希望各路大佬可以一起讨论一下
正文
问题一:备忘录模式和原型模式的区别
用法区别
备忘录模式是将历史状态保存,直接在原有状态上修改。因此每次修改都可以回滚,但是不能合并
原型模式是新建一个一模一样的对象,在全新的对象上进行修改。因此可以合并,回滚也只是切换
消耗区别
备忘录模式只能保存对象的状态,不能直接保存对象的实例,尝试过直接保存对象实例,对象修改,保存的实例也会跟着修改。因为直接保存实例只是一个强引用指向。
原型模式直接创建一个全新的实例,所以全新实例修改,原有实例不会跟着变化,但是消耗更多。
应用场景区别:
备忘录模式适用于打游戏保存记录,数据库快照(备份),浏览器回退,git每次提交
原型模式适用于git开分支,数据库多版本管控(事务&#x