增加一個間接層來解耦的所有設計模式總結
增加一個間接層來解耦的設計模式有:
- 工廠方法模式
- 抽象工廠模式
- 模板方法模式
- 建造者模式
- 橋樑模式
- 命令模式
- 直譯器模式
工廠方法模式
工廠方法(Factory Method)模式的意義是定義一個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。
那麼工廠方法模式使怎麼解耦的呢?假如我們的程式裡有 100處需要 new Apple()而且需要 newGreenApple() ;但如果我們突然想要 new RedApple()時會發生什麼情況呢?我們會發現我們需要更改 100 處程式碼,這顯然是無法接受的高耦合。
那如果我們用工廠方法模式呢?我們把工廠裡生產的產品由 GreenApple
抽象工廠模式
我個人覺得抽象工廠模式就是多一個間接層的工廠方法模式。
模板方法模式
模板方法模式:定義一個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。
模板方法模式是一種基於繼承的程式碼複用技術。程式碼複用這個很明顯,那麼間接層在哪兒?
其實間接層就是那抽象出來的延遲到子類的方法。將一些步驟的實現延遲到子類,就實現了這些易變的步驟和父類哪些穩定的步驟之間的解耦合。
建造者模式
建造者模式:是將一個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。
建造者模式最明顯的作用就是將一個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示了。
建造者模式是怎麼解耦合的呢?
建造者模式和工廠方法模式差不多,只是工廠方法模式是建立物件,而建造者模式是有了物件之後去組裝這個物件的屬性。解耦合原理見工廠方法模式。
橋樑模式
橋樑模式:將抽象部分與實現部分分離,使它們都可以獨立的變化。
橋樑模式就是為了應對含有兩個維度以上的事物,將這兩個維度解耦合,使之可以獨立的進行變化。避免了含有兩個維度以上時的繁瑣和冗長。
命令模式
命令模式:將一個請求封裝成一個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能。
命令模式是一個高內聚的模式,解耦合的作用比較弱,一般只有在更改命令的時候才會看到它的解耦合的好處。
直譯器模式
直譯器模式:給定一種語言,定義他的文法的一種表示,並定義一個直譯器,該直譯器使用該表示來解釋語言中句子。
直譯器模式主要是將符號和這個符號的實現進行解耦。