【问题标题】:Copying an Object in different ways以不同方式复制对象
【发布时间】:2012-11-13 21:45:59
【问题描述】:
我正在寻找以不同方式复制对象的设计原则/模式。例如,我有以下选项来复制 ACCOUNT 类类型的对象。
1) 完全克隆
2) 克隆除信用详细信息以外的所有内容
3) 克隆信用逆转(否定值)等。
在所有场景中,克隆同一个对象;但根据客户的输入具有不同的值。
我在想原型模式;但它不允许客户端控制对象的复制方式。
谢谢,
普雷迪普
【问题讨论】:
标签:
oop
design-patterns
ooad
【解决方案1】:
原型模式或工厂作为更通用的解决方案。
正如我们所知,克隆只是一个副本。最常见的解决方案是按值复制、按引用复制和混合写入时复制。
克隆除信用详细信息之外的所有内容 - 就像“克隆信用” - 而是创建与原始对象相关的新对象。
您是要在具体对象上还是在工厂中实现这些实际上是您任务中的当地条件问题。
【解决方案2】:
克隆不是一个简单的概念。你有传统的浅拷贝或深拷贝,但你可以有任何介于两者之间的东西。您可以对对象的某些字段进行浅拷贝,同时对其他字段进行深拷贝(“递归克隆”)。
特定的克隆方法是应用程序的责任,这就是它不能自动化或自动生成的原因。
如果您克隆复杂的对象图,父类甚至可能会更新某些字段。所以你甚至不能将所有东西都封装在一个类的 clone 方法中。
恐怕您找不到您描述的特定克隆模式,但带有一些扩展名(“克隆标志”)的原型模式就可以了。