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

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.

主站蜘蛛池模板: 科技| 手机| 芦溪县| 丹东市| 双辽市| 比如县| 南雄市| 繁昌县| 景泰县| 阳朔县| 原阳县| 景东| 遵义市| 体育| 内黄县| 区。| 东城区| 东港市| 周口市| 景泰县| 蒲城县| 阳泉市| 唐海县| 长岭县| 漳浦县| 田林县| 平塘县| 镇原县| 白银市| 双柏县| 慈利县| 浦北县| 民乐县| 县级市| 贵港市| 咸宁市| 大冶市| 金华市| 和顺县| 东丽区| 新竹县|