我的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...