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

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.

主站蜘蛛池模板: 陇西县| 芮城县| 阿城市| 台山市| 措勤县| 吴忠市| 尼玛县| 新乡县| 孟津县| 平山县| 印江| 汾西县| 旅游| 安宁市| 绵阳市| 宜章县| 文成县| 昌平区| 怀化市| 库尔勒市| 兴文县| 溧阳市| 万全县| 南部县| 海伦市| 郴州市| 金川县| 石楼县| 渝北区| 宜兰市| 绩溪县| 城固县| 和政县| 和林格尔县| 富蕴县| 建平县| 甘南县| 梁河县| 同德县| 台湾省| 聂荣县|