最簡設計模式

2021-09-11 03:26:17 字數 1904 閱讀 8703

設計模式應用舉例

剛開始學

剛開始學習設計模式的時候,感覺很興奮,這東西太好了。

困惑

當時學完後,不知道如何用。甚至自己用過了也不知道自己用過了。

於是我想:學這東西到底有什麼用呢,到底如何才算學會呢?

領悟

後來我明白了,其實設計模式只是面上物件應用的一些典型案例,模式的價值在於對物件導向屬性的巧妙運用,如果你找到了每一種模式的巧妙之處,即每種模式都什麼用的物件導向特性(繼承,過載,多型)。

建議

其實如果想學的簡單點,你就在模式中找多型,找到了,你就學會了。

如上是我學習過程的體悟,對有一點我要補充一下,有些對設計模式的講解把例子將得太複雜了,我當時學完啥感覺:需求理解已經消耗了我大部分的精力和熱情了,那還有精力能夠發現模式本身的關鍵呢?

為什麼說需求理解已經消耗了我的大部分精力呢?

因為大部分設計模式講解都從乙個複雜的需求開始,甚至加上運用設計模式的演進過程,當你把這流程學習完之後,你問問自己,你知道該模式是什麼了嗎?他和其他模式的不同在**?如果給你一些**,你能確定這裡用了什麼模式?我當時候是一頭霧水的,我甚至把需求和**都能背記下來的時候,還是有上述的困惑。這裡先說一句,其實你如果找到了模式中的物件導向模型,你就一定懂了這個模式,至於需求的場景什麼的,你完全可以憑自己的想象去套用。

重點(如您不願意多浪費時間,請一定要理解這句話再看下面具體的模式)

我如下的設計模式都是用最簡單的方式實現的,我希望大家對設計模式的學習順序是先能了解某個設計模式用了乙個什麼樣物件導向模型,這些模型本身有什麼特點,和其他模式的模型有什麼區別,然後你再自己去套用場景,別被別人的場景弄的失去了重點。這是我認為一種快速學習設計模式的方式。

如下我將所有的模式用最簡單的方式整理一遍。

建立型:

1. 單件模式(singleton pattern)

2. 抽象工廠(abstract factory)

3. 建造者模式(builder)

4. 工廠方法模式(factory method)

5. 原型模式(prototype)

結構型:

6. 介面卡模式(adapter pattern)

7. 橋接模式(bridge pattern)

8. 裝飾模式(decorator pattern)

9. 組合模式(composite pattern)

10. 外觀模式(facade pattern)

11. 享元模式(flyweight pattern)

12. **模式(proxy pattern)

行為型:

13. 模板方法(template method)

14. 命令模式(command pattern)

15. 迭代器模式(iterator pattern)

16. 觀察者模式(observer pattern)

17. 直譯器模式(interpreter pattern)

18. 中介者模式(mediator pattern)

19. 職責鏈模式(chain of responsibility pattern)

20. 備忘錄模式(memento pattern)

21. 策略模式(strategy pattern)

22. 訪問者模式(visitor pattern)

23. 狀態模式(state pattern)

中和分析:

1. 設計模式對比分析

2. 策略、狀態、職責鏈、多角度分析

3. 策略、狀態、職責鏈、共同點和差異分析(類圖)

4. 設計模式關鍵-多型

5. 用多型分析建立型模式的要點

工廠方法模式最簡實現

設計模式目錄 工廠方法應用舉例 坦克大戰 價值 有乙個工廠方法可以加工不同的商品。具體解釋 在某個類 creator 的工廠方法 factorymethod 能被多型成加工不同產品的方法。如果有這麼樣的乙個方法存在,那麼就是實現了該模式,這是該模式的唯一特性 該模式有如下兩個要點 1.該函式可多型 ...

裝飾設計模式簡析

裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...

裝飾設計模式簡析

裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...