Clone Pattern
核心思維: 一個Clone方法,其功能就是拷貝父本的所有屬性。
主要過程包含
- 分配一塊新的記憶體空間給新的物件。
- 拷貝父本物件的所有屬性。
透過拷貝自身的屬性來創建一個新物件的過程叫做克隆模式(Clone),也可稱為原型模式。
使用此模式,需要注意的是:區分淺拷貝(copy)和深拷貝(deepcopy),除非一些特殊情況,儘量使用深拷貝的方式(我們稱其為安全模式)。
優點
- 克隆模式透過記憶體拷貝的方式進行複製,比New的方式創建物件性能更好。
- 透過深拷貝的方式,可以方便地創建一個具有相同屬性和行為的另一個物件,特別是對於複雜物件,方便性尤為突出。
缺點
透過克隆的方式創建物件,不會執行類別的初始化函數(__init__
)。這不一定是缺點,但大家使用的時候需要注意這一點。
使用情境
- 如果創建新物件(如複雜物件)成本較高,我們可以利用已有的物件進行複製獲得。
- 類別的初始化需要消耗非常多的資源,如需要消耗很多的資料、硬體等資源。
- 可配合備忘錄模式做一些備分的工作。
舉例:
一些配置設定,可以複製一份原始(default)配置,然後修改新的配置。以便做切換。
note
來源: Python 設計模式 - 羅偉富