Skip to main content

Clone Pattern

核心思維: 一個Clone方法,其功能就是拷貝父本的所有屬性。

主要過程包含

  1. 分配一塊新的記憶體空間給新的物件。
  2. 拷貝父本物件的所有屬性。

透過拷貝自身的屬性來創建一個新物件的過程叫做克隆模式(Clone),也可稱為原型模式

使用此模式,需要注意的是:區分淺拷貝(copy)和深拷貝(deepcopy),除非一些特殊情況,儘量使用深拷貝的方式(我們稱其為安全模式)。

優點

  1. 克隆模式透過記憶體拷貝的方式進行複製,比New的方式創建物件性能更好。
  2. 透過深拷貝的方式,可以方便地創建一個具有相同屬性和行為的另一個物件,特別是對於複雜物件,方便性尤為突出。

缺點

透過克隆的方式創建物件,不會執行類別的初始化函數(__init__)。這不一定是缺點,但大家使用的時候需要注意這一點。

使用情境

  1. 如果創建新物件(如複雜物件)成本較高,我們可以利用已有的物件進行複製獲得。
  2. 類別的初始化需要消耗非常多的資源,如需要消耗很多的資料、硬體等資源。
  3. 可配合備忘錄模式做一些備分的工作。

舉例:

一些配置設定,可以複製一份原始(default)配置,然後修改新的配置。以便做切換。

note

來源: Python 設計模式 - 羅偉富