iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 27
0
自我挑戰組

Framework 設計原則系列 第 27

使用原則(4) - ICloneable

ICloneable

ICloneable介面中只有一個方法: Clone()

public interfcae ICloneable{
    Object Clone();
}

物件需要有複製功能時,請實做ICloneable

Clone又可以分為deep-copy , shallow-copy兩種

deep-copy除了複製物件外,也會該物件指向的其他物件一起複製

修改複製的物件並不會影響原來的物件

shallow-copy則是指複製原本物件,但是物件指向的參考位址與來源物件一致
http://ithelp.ithome.com.tw/upload/images/20170114/20091485nyLijaXlHo.jpg

但實作時使用者很難去判斷這個Clone是 Deep-copy or shallow-copy

所以本書中反而建議大家不要使用 (這樣幹嘛還寫出來???)

如果需要有複製功能的話,考慮直接加在物件中

public class Customer{
    public Customer Clone();
}

上一篇
使用原則(3) - DateTime, DateTimeOffset
下一篇
使用原則(5) - IComparable<T>, IEquatable<T>
系列文
Framework 設計原則30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言