如何在Memento模式中创建纪念品的默认实例?

时间:2010-09-16 06:48:03

标签: design-patterns memento

我使用Memento Pattern来保存多实例表单的属性,其中n个表单由用户在父表单中创建。纪念品的目的是在用户关闭并稍后重新打开父表单时重新获得相同数量的表单及其设置。保存表单纪念品是通过父表单上的“保存”按钮完成的。所以我有两个挑战..

  1. 我需要在打开新表单时使用一组默认属性,所以我在哪里设置这些默认值..在memento的默认空构造函数中,或者在Originator中的某个地方(where?)?
  2. 接下来我希望用户能够更改默认值,从而制作自己的默认纪念品。如何/在哪里保存,以及如何确定是否已设置此类默认纪念品?
  3. 当然,我可能会以某种方式调整此工作,但我想知道是否有一般模式描述可以解决这个问题,因此我有一个坚定的指导方针可以遵循。

    喝彩!

3 个答案:

答案 0 :(得分:1)

memento类的默认空构造函数应该没问题,或者你可以使用CreateDefault()工厂方法,例如,如果你想保留默认构造函数来初始化 blank 纪念品而不是预设的默认配置。

您可以使用许多不同的creational patterns来指定自定义默认设置,包括prototypeabstract factory

答案 1 :(得分:1)

您的描述与Memento patttern并不完全匹配。 Memento的全部意义在于,只有要修复的类的实例才能了解有关纪念品的表现形式。也就是说,Memento是关于隐藏状态,而不是允许客户设置任意状态。

正如Mark Cidade上面所说,还有其他更合适的模式可用于您的问题。

答案 2 :(得分:0)

根据你的问题以及伯利熊答案中的评论,我觉得直接的实施已经足够,而且这里不需要“强迫”模式。