評估設計模式:1、這個模式是否涵蓋了我可能遇到的問題?2、這個問題發生的頻率如何?3、我對解決未來某個問題的在意程度,是否足以讓我現在花費精力去實現這個設計模式?
對象模板模式
是什么:
對象模板模式使用類或者結構體作為數據類型及其邏輯的規范。創建對象時使用模板,并在初始化時完成數據賦值。賦值時,要么使用模板中的默認值,要么使用類或者結構體的初始化器(也叫構造器)來提供數值。
有什么優點:
對象模板模式為 將數據與操作數據的邏輯組織在一起,即封裝,提供了基礎。封裝使得對象可以在為其用戶提供接口(API)的同時,隱藏接口的內部實現。這有利于防止組件之間形成緊耦合。
何時使用此模式:
除非是及其簡單的項目,否則都應該使用此模式。盡管元組是 Swift 很有意思的特性,但是從長遠來看,使用它表示數據會引發一些維護問題,而且創建一個類或者結構體并不是很復雜。
如何確定使用了正確的設計模式:
如果修改類或者結構體內部實現時,使用了此模式的組件無需做出相應的改變,則說明正確的實現此模式。
有哪些常見的陷阱:
唯一的陷阱是,應該使用類作為模板的時候卻使用了結構體。結構體和類具有很多共同之處,但是當把它們創建的對象賦值給新變量時,它們的行為并不一致。
對象模式由三步操作組成:
1、第一步操作是調用組件請求 swift 運行時創建一個對象,并提供需要用到的模板名稱,配置創建對象需要的運行時數據值。
2、在第二步操作中,swift 運行時分配存儲該對象所需的內存,并使用模板創建該對象。模板中含有用于準備對象(設置初始數據)需要使用的初始化方法,這些方法要么使用調用組件提供運行時值,要么使用模板中定義的值(或者同時使用)來設置對象的初始狀態。swift 運行時會調用這些方法來準備對象,以供調用組件使用。
3、swift 運行時把創建好的對象返回給調用組件。三步走的過程可以任意重復,因此一個模板可以創建多個對象。