知识卡片
多状态备忘录用反射通用备份所有属性
内容
[[备忘录模式的定义与三个角色]]的基础版本只演示单一状态字段,真实JavaBean有多个属性时 逐个手写繁琐。解法是写通用BeanUtils工具类:backupProp用反射遍历属性收集进HashMap, restoreProp反过来用setter写回,属性数量增减都不需要改这套逻辑。发散:这种”反射通用 序列化”思路后来被Spring等工具库封装成标准API,遇到类似需求可直接复用。
参考来源
- 位置:《设计模式之禅(第2版)》第24章《备忘录模式》(源文件:_epub-src/text/part0113.html)
- 结论依据:原文给出BeanUtils.backupProp和restoreProp的完整反射实现,说明"该类大家在项目中会经常用到,可以作为参考使用。类似的功能有很多工具已经提供,比如Spring、Apache工具集commons等"。
- 原始内容:我们要讲的方案就对备忘录模式继续扩展一下,实现一个JavaBean对象的所有状态的备份和还原……backupProp是把发起人的所有属性值转换到HashMap中……restoreProp方法则是把HashMap中的值返回到发起人角色中。