策略模式、觀察者模式

策略模式:

策略模式是一個比較常用的模式,即使你沒有學習過設計模式,但是你以前的代碼中或多或少的用到過策略模式,只是你可能還不知道罷了。他是多用組合少用繼承、面向接口編程的一大體現,在類中有其他接口的組合,調用的是接口的方法,通過各個接口不同的實現來算法的替換。就像諸葛亮的錦囊妙計一樣,每個錦囊就是一個策略。

1. 定義

定義了算法族,分別封裝起來,讓他們之間可以相互替代,此模式讓算法的變換獨立於使用算法的客戶。

2. 優缺點

  • 優點:算法之間可以任意的切換,維護和擴展都很好啊
  • 缺點:策略類會很多,實現起來會繁瑣一些。(這個其實是大多數設計模式的通病)

3. 類圖

4. 用到的設計原則

  1. 面向接口編程
  2. 多用組合,少用繼承
  3. 封裝變化

2. 觀察者模式

觀察者模式是使用非常多的一個模式,在JDK中也有大量的應用,比如在swing的事件處理中就用到了觀察者模式。說白了觀察者模式就是一個一對多,像一羣人看電視一樣,電視就是一個subject(主體)或者說是被觀察者,而看電視的人就是observer(觀察者),電視的每一次變化都會被看電視的人看到。

1. 定義

定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,他的所有依賴者都會收到通知並自動更新。

2. 優缺點

  • 優點:主題和觀察者之間依賴的是接口,是松耦合的關係,並且滿足開閉原則,可以擴觀察者的子類,並且主體類不用修改,只需要在主題類的客戶(調用主體類的類)中修改一些代碼即可。
  • 缺點:如果主題有很多的直接觀察者或間接觀察者的話,通知這些觀察者需要花費很多的時間。如果主題之間有循環依賴的話,會觸發循環調用,這點在使用觀察者模式的時候要特別注意。

3. 類圖

4. 用到的設計原則

  1. 多用組合少用繼承
  2. 面向接口編程
  3. 開閉原則

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章