Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 以不同方式复制对象_Oop_Design Patterns_Ooad - Fatal编程技术网

Oop 以不同方式复制对象

Oop 以不同方式复制对象,oop,design-patterns,ooad,Oop,Design Patterns,Ooad,我正在寻找以不同方式复制对象的设计原则/模式。例如,我有以下选项来复制ACCOUNT类类型的对象 1) 精确克隆 2) 克隆除信用详细信息以外的所有信息 3) 克隆用于信用冲销(否定值)等 在所有场景中,克隆相同的对象;但根据客户的输入使用不同的值。 我在考虑原型模式;但它不允许客户端控制对象的复制方式 谢谢 Pradeep原型模式或可能的工厂模式作为更通用的解决方案 正如我们所知,克隆只是一个拷贝。最常见的解决方案是按值拷贝、按引用拷贝和混合写拷贝 克隆除信用详细信息之外的所有内容,就像“信用

我正在寻找以不同方式复制对象的设计原则/模式。例如,我有以下选项来复制ACCOUNT类类型的对象

1) 精确克隆

2) 克隆除信用详细信息以外的所有信息

3) 克隆用于信用冲销(否定值)等

在所有场景中,克隆相同的对象;但根据客户的输入使用不同的值。 我在考虑原型模式;但它不允许客户端控制对象的复制方式

谢谢


Pradeep

原型模式或可能的工厂模式作为更通用的解决方案

正如我们所知,克隆只是一个拷贝。最常见的解决方案是按值拷贝、按引用拷贝和混合写拷贝

克隆除信用详细信息之外的所有内容,就像“信用克隆”,而不是创建与原始内容相关的新对象


您是想在具体对象上实现这些功能,还是在工厂中实现这些功能,实际上是您任务中的局部条件问题。

克隆不是一个简单的概念。你有传统的浅拷贝或深拷贝,但你可以有任何介于两者之间的内容。可以浅复制对象的某些字段,而深复制(“递归克隆”)其他字段

特定的克隆方法是应用程序的责任,这就是为什么它不能自动或自动生成

如果克隆复杂对象图,甚至可能父类会更新某些字段。因此,您甚至不能用一个类的clone方法封装所有内容


恐怕您找不到您所描述的特定克隆模式,但是带有一些扩展(“克隆标志”)的原型模式就可以了。

为什么要使用模式/原理来克隆/复制对象?