Swift實戰-原型模式

林欣達發表於2016-08-01

116941baebjw1f6e3qakckyj20ut05i0tg

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。GoF提出了23種設計模式,本系列將使用Swift語言來實現這些設計模式

概述

通過複製一個已存在的物件來獲得一個新的相同型別的物件被稱作原型模式,在複製的過程中不需要關心被複制物件實現的介面或者型別

原型模式Prototype具有如下優點:

  • 隱藏了建立物件的實現細節
  • 複製操作不受子類構造器改變影響
  • 避免了重複建立物件產生的大量程式碼

簡單來說,原型模式分為以下兩種:

  • 簡單拷貝
  • 登記拷貝

沒有使用原型Prototype的拷貝程式碼是怎樣的呢?我們需要通過訪問

簡單形式拷貝

通過宣告一個Cloning協議來為需求方提供完全拷貝的方案

簡單點來說,原型模式在iOS開發中就是NSCopying協議,通過實現這個協議完成物件和其成員物件的完全記憶體拷貝,也可以稱為深拷貝。從這個角度而言,原型模式Prototype就是深拷貝的理論化

126941baebjw1f6e3qab10tj20yg0oodhm

登記拷貝

登記拷貝實際上就是在簡單拷貝的基礎之上對這些clone物件進行管理

總結

原型模式Prototype將物件和其成員物件的拷貝過程隱藏起來,只提供了一個簡單的介面提供我們獲取拷貝後的物件,是一種優雅而強大的設計。使用原型模式需要注意實現Cloning的物件其成員物件也應該遵循這個協議提供簡單的拷貝介面

上一篇:Swift實戰-模板模式

相關文章