iOS 21種設計模式之原型模式Prototype

2021-07-09 02:47:26 字數 1283 閱讀 9778

我的stackoverflow

感謝《pro objective-c design pattern for ios》一書,這個部落格系列由很多靈感源自次書。同時,也感謝wiki以及一些部落格博主。每篇文章最後,都會列出參考鏈結。

物件建立模式

設計模式是為了解決一類問題而出現的,要深刻理解某個模式的應用場景,優點,缺點。千萬不要為了使用而實用,那樣很可能寫出不倫不類的東西。

原型可以理解為模版,在建立新的物件的時候,按照模板的方式來複製。這樣避免了重新創造輪子。

簡單理解就是:建立第乙個模板物件,然後通過複製模板來建立新的物件,還記得uitableviewcell的deque方法嗎?這其實就是乙個「原型」,

例子是要儲存複雜的巢狀資料結構

假設我有乙個繪圖類leodrawer,那麼這個drawer必然要儲存每一步後操作的結果,這樣我能夠進行redo和undo(可以用nsundomanager,這裡只是舉例)。類似這種快照就是原型模式的典型場景

定義原型

protocol shape

func draw()

func clone()->shape

}

具體的類

class

roundshape: shape

func draw()

func clone() -> shape

}class

rectshape:shape

func draw()

func clone() -> shape

}

客戶端

class

leodrawer

let drawer = leodrawer()

drawer.shapes = [roundshape(location: cgpointmake(1, 1)),rectshape(location: cgpointmake(10, 10))]

let shapessnapshot = drawer.shapes?.map()

優點

在擴充套件的時候,子類遵循原型的協議,很容易的擴充套件。並且,客戶端**不需要任何修改

iOS 21種設計模式之單例(Singleton)

感謝 pro objective c design pattern for ios 一書,這個部落格系列由很多靈感源自次書。同時,也感謝wiki以及一些部落格博主。每篇文章最後,都會列出參考鏈結。設計模式是為了解決一類問題而出現的,要深刻理解某個模式的應用場景,優點,缺點。千萬不要為了使用而實用,那...

iOS設計模式之原型模式

說明 深複製和淺複製 指標只是儲存在記憶體中資源位址的佔位符。在複製操作中,如果只是將指標複製給新物件 副本 那麼底層的資源實際上仍然由兩個例項在共享。其實兩者指向的都是同一塊記憶體。這就是淺複製。什麼是深複製呢?深複製是指不僅複製指標值,還複製指標所指向的資源。cocoa touch框架為nsob...

iOS設計模式 原型模式

使用原型例項指定建立物件的種類,並通過複製這個原型建立新的物件 它通過複製乙個已經存在的例項來返回新的例項,而不是新建例項 原型模式實際意義上來說是拷貝 而且一般情況下都是深拷貝。簡單理解就是 建立第乙個模板物件,然後通過複製模板來建立新的物件 遵守協議 實現 id copywithzone nsz...