制作单身的单一副本

时间:2015-04-01 14:42:02

标签: ios objective-c singleton

设计问题:

我有一个单身人士(在目标C中,但这并不重要)

单例是一个类(对象),它实际上是许多类访问的数据结构,并且是单个的(因此 - 单例)

现在我想添加撤消功能 - 这实际上是保存了对象状态的快照 - 所以我可以回到它。

我真正需要做的是打破对象的单一性(需要它的一个副本)。 但这不允许我在所有课程之间方便地分享。

想法?

3 个答案:

答案 0 :(得分:1)

“单例是一个类(对象),它实际上是许多类访问的数据结构,并且是单个”

我认为让单个对象拥有数据结构的集合更容易。然后,您只需创建数据结构的副本,而不是单例副本。

答案 1 :(得分:1)

10年前,当设计模式首次被开发人员采用时,单身模式变得流行起来。在那之后的几年里,单身人士已经被废弃,因为在单元测试中嘲笑是非常困难的。因此,最简单的答案是完全放弃单身模式,转而采用更友好的模式。

答案 2 :(得分:0)

您可以在单件类中实现- (id) copy方法。

在此方法中,分配您的类的新实例,并将其所有属性设置为共享实例属性的副本。