我在.NET上看到了两种不同的memento实现。
其中一个非常简单-对象创建了另一个自身的实例。
另一个是使用BinaryFormatter和MemoryStream序列化对象。
哪一种是首选方法?有人能指出每种方法的优缺点吗?
顺便说一句,我有兴趣从资源使用/开发人员生产力的角度来看待它。我很抱歉没有先说出来。
假设备忘录不需要持久化,哪一个是首选的?
从开发人员生产力的角度来看,序列化赢得了成功。对于任何对象来说,有几行是通用的,比手动创建一个可能涉及私有构造函数、字段分配等的克隆更有效。
但是,也许序列化很重--我不确定。
发布于 2008-11-12 16:20:40
我认为,如何创建/存储memento的选择取决于您希望memento持续多长时间,以及是否需要跨应用程序域通信该memento。如果备忘录只存在一段很短的时间,并且仅由同一个线程使用,那么克隆的对象是合理的。如果该备忘录需要持久化或传递给另一个应用程序域,则最好是序列化。如果备忘录存在很长时间,您甚至可能希望序列化它并将其保存在外部(在一个文件或DB中)。
发布于 2008-11-12 16:16:33
如果要持久化备忘录,请使用序列化方法。
否则,克隆的对象就可以了。
发布于 2008-11-12 16:21:49
说我疯了,效率低,但我做我的StringBuilder和一个字符串。
https://stackoverflow.com/questions/284437
复制相似问题