官术网_书友最值得收藏!

Shallow clone versus deep clone

When cloning objects, we should be aware of the deepness of cloning. When we clone an object that contains simple datatypes, such as int and float, or immutable objects, such as strings, we should simply copy those fields to the new object, and that's it.

A problem arises when our objects contain references to other objects. For example, if we have to implement a clone method for a Car class that has an engine and a list of four wheels, we should create not only a new Car object but also a new Engine and four new Wheel objects. After all, two cars cannot share the same engine and the same wheels. This is called a deep clone.

Shallow cloning is a method of cloning only the object that is the subject of cloning. For example, if we have to implement a clone method for a Student object, we are not going to clone the Course object it points to. More than one Student object can point to the same Course object.

In practice, we should decide whether we need deep, shallow, or mixed cloning based on each scenario. Usually, shallow cloning corresponds to the aggregation relation described in Chapter 1, From Object-Oriented to Functional Programming, and deep cloning to the composition relation.

主站蜘蛛池模板: 巩留县| 南阳市| 扶余县| 日照市| 乌海市| 报价| 南宫市| 辽阳县| 明溪县| 江华| 芒康县| 牟定县| 合江县| 博白县| 东平县| 上虞市| 乾安县| 罗甸县| 涿州市| 阿坝县| 开原市| 西宁市| 隆子县| 湖南省| 喀喇| 中山市| 探索| 松潘县| 塔河县| 广南县| 松阳县| 渭南市| 正镶白旗| 遵义县| 黄骅市| 仙居县| 北海市| 台江县| 板桥市| 大足县| 乌兰察布市|