2013-11-04 136 views
5

何时使用克隆(请不定义)?我可以启动一个对象并使用该对象,那么为什么要在现实世界中使用克隆呢?克隆对象的动机

浅层克隆的动机是什么(我知道它复制值类型并引用参考类型)?

请给我一个来自现实世界的例子,而不是克隆,深克隆或浅克隆的定义。

在此先感谢。

回答

4

请给我一个例子来自真实世界的

如果你有这不是线程安全的对象,但你可以把它克隆到多个独立实例,那么你可以使用这些个别情况下在不同的线程。

1

请给我从现实世界

一个例子,我前几天使用的例子:

我公司开发的组件,用于基于第三方组件打印不同类型的文件。

在我的上下文中,这是一个复杂的构造,而不是“便宜”和“容易”实例化。有时我需要多个打印组件。因此,使用一个浅层克隆,只替换配置对象(提供所有打印相关环境信息的打印组件的“子对象”)给我我需要的工作量。

0

一个示例可能是,您可能希望保留当前的对象值,并且在某些情况下可能需要回滚到以前的值。考虑应用程序的设置。在设置窗口中,您可以按取消或保存。如果您按取消,则需要放弃所有更改。所以你克隆设置对象,将其显示给用户,如果按下保存,只需从克隆对象中获取值并设置为实际对象