知识卡片

多状态备忘录用反射通用备份所有属性

普通读书笔记卡 · 1992.e

内容

[[备忘录模式的定义与三个角色]]的基础版本只演示单一状态字段,真实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中的值返回到发起人角色中。