設計思想學習 外觀模式

2021-08-14 06:58:21 字數 1191 閱讀 4248

記得有一次,我們一起去了乙個別墅轟趴,那時候大家都去玩自己想玩的事情,大廳開燈是必須的,看電影的要去小房間開投影儀幕布,玩遊戲的要開電腦或者xbox等等。

最後玩的筋疲力盡了還要乙個個去把他們關掉,那時候就在想如果有乙個按鈕關掉或者開啟所有多好。

直到今天看了外觀模式才知道,那個想法就是乙個外觀模式的思想,把所有開啟和關閉的功能全部集中在乙個按鈕上,我們不需要乙個個開啟也不需要知道如何開啟,只用按一下按鈕就能開啟關閉。

外觀模式(facade):為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。

單單看定義其實我也沒有很明白,不過看過例子後我突然想起了,我的那次親身經歷。

可以把電腦、燈、xbox等等看成一組,然後我的想法中的那個按鈕就是這個一致的介面,通過這個按鈕可以方便我們更加方便的開關它們,而不用在跑到乙個個房間去檢查有沒有關掉。

根據上面的想法就很容易看出外觀模式的兩個角色了:

來看一下uml圖

這樣就更加簡單明瞭了,client完全可是看**,facade就是我想法中的按鈕了,那麼剩下的子系統類就是電腦、燈、xbox等東西了。下面我們來看下**實現

class xbox

public

void

close()

}class light

public

void

close()

}class computer

public

void

close()

}class dreambutton

public

void

allstart()

public

void

allclose()

}public

class client

}

這樣子就是通過乙個按鈕可以解決電器的關閉問題,而不用再去房間裡檢查哪些東西忘記關閉了。

運用外觀模式的好處是:

同樣的有好就有壞:

如果我還想把空調等電器加入控制,那麼我就需要重新設定按鈕功能,也是說在**裡面我需要去修改dreambutton這個類,違反了開閉原則。

設計思想學習 策略模式

首先來看一下定義 策略模式 strategy 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換 策略模式主要有三點組成 舉個栗子 我中午想吃好吃的,但可以吃的東西有很多種 烤鴨 龍蝦 帝王蟹,但是不管吃啥,都是吃,所有就有了抽象策略角色 inte ce dine 下面這些是具體吃啥,也...

設計思想學習 組合模式

本來這篇是要元旦發出來的,可惜玩的太嗨了,沒有時間發,只能抽空看看知識點。祝大家新年新氣象,身心健康,心想事成。相信只要玩過電腦的人都對下面的這張圖不會陌生 這結構想必大家也都熟悉,就是樹狀結構 其實這也是組合模式的定義 組合模式 composite 將物件組合成樹形結構以表示 部分 整體 的層次結...

設計思想學習 建造者模式

建造者模式 builder 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式組成uml圖 個人理解 建造者定義很通俗易懂,就是將裝配的過程和成果展示分離,過程不變,但是我可以改變材料,出來不相同的作品。這個過程就由抽象建造者定義 實際建造者就是通過定義好的過程新增...