一、策略模式
策略模式定義了算法族,分別封裝起來,讓它們之間可以相互替換,此模式讓算法的變化獨立於使用算法的客戶。
設計原則
1.找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混合在一起。
2.針對接口編程,而不是針對實現編程。
3.多用組合,少用繼承。
二、觀察者(Observer)模式
觀察者模式定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知並自動更新。
設計原則
1.爲了交互對象之間的鬆耦合設計而努力。
三、裝飾者模式
裝飾者模式動態地將責任附加到對象上。若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。
設計原則
1.類應該對擴展開放,對修改關閉。
四、工廠模式
工廠方法模式定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化推遲到子類。(利用繼承)
抽象工廠模式提供一個接口,用於創建相關或依賴對象的家族,而不需要明確指定具體類。(利用對象組合)
設計原則
1.要依賴抽象,不要依賴具體類。
五、單例模式
單例模式確保一個類只有一個實例,並提供一個全局訪問點。
雙重檢查加鎖,在sharedSingleton中減少使用同步
+ (Singleton *)sharedSingleton
{
if(_sharedSingleton == nil)
{
@synchronized([Singleton class])
{
if(_sharedSingleton == nil)
{
_sharedSingleton = [[self alloc] init];
}
}
}
return _sharedSingleton;
}