具有复合图案的纪念设计图案

时间:2017-02-08 23:05:48

标签: design-patterns paint

我有一个扩展表单类的矩形类,一个扩展表单类的复合类和一个memento类,用于回滚表单的x和y属性。

我有一个画布,我正在画一些形状。通过移动一个形状就可以了。我可以通过安装纪念品撤消这一举动。

问题是当我在表单的复合对象中对形状进行分组并移动它们时,我找不到通过安装纪念品来回滚移动操作的方法。有谁知道这是怎么做到的吗?

1 个答案:

答案 0 :(得分:0)

最好为整个画布的一个特定状态维护一个Memento,而不是画布上的单个形状。这个Memento可以是一个包含不可变对象的Composite对象。当您更改对象时,您不会更改其属性,而是使用新属性创建一个新属性,并使用新情况重建整个Memento。

它似乎有点内存消耗,但你可以非常好地优化,因为不可变对象可以很好地重用。您可以在创建下一个纪念品时重复使用未更改的对象。

我不确定这样可以理解。 不可塑性和一片纪念画是重要的事情。