設計模式以外觀模式-引導篇及原理

外觀模式-引導篇及原理java


來看看司小司的新項目-家庭影院控制接口項目ide

document_image_rId9.png

家庭影院設備:測試

DVD播放器、投影儀、自動屏幕、環繞立體聲、爆米花機等等。spa

對於的類對象:DVDPlayer、Projector、Stereo、Popcorn、Screen、TheaterLights etc...設計

類圖以下:orm

document_image_rId10.png

咱們知道,這些設備須要遙控器,同時這些設備都對外提供了接口。若是一個設備一個遙控器是否是很麻煩。如今需求是,爲了方便省事。只須要一個設備來處理。對象

來源:凱哥Java(kaigejava)接口

咱們先來看看傳統的控制接口設計,步驟以下圖:get

document_image_rId11.png

看一場家庭影院,還這麼多步驟。確實很麻煩。咱們來分析:爆米花機能夠看做是一個子系統、投影儀是一個子系統、音響能夠看做是一個子系統等等。咱們將各個設備都單獨的看做是一個子系統,咱們就會發現,這些子系統或許存在着內部關聯關係或者是須要統籌協調工做的。有沒有更好的解決方案呢?博客


司小司調研以後,決定使用外觀模式這種設計模來實現這種需求。咱們先來看看外觀模式是什麼。

咱們能夠將以上各個設備相識或者有關聯的操做放到一個方法中,而後對外在提供統一的一個對象接口。這樣,好比說,咱們先要準備:爆米花機開機、投影儀開機、屏幕自動放下這一組操做放到一個方法中。DVD碟片選擇、燈光調暗、播放DVD這一組操做放到一個方法中。關閉各類設備操做放到一個方法中。最後咱們就獲得了以下的類圖:

document_image_rId12.png

通過上面分析,咱們能夠知道:

外觀模式:對外提供了一個統一的接口,來訪問子系統中一羣功能相關接口。

外觀模式定義了一個高層接口,讓子系統更容易使用。

咱們來看看代碼結構:

document_image_rId13.png

說明:

爆米花機、投影儀、屏幕等咱們使用的都是單例模式。由於這些東西,一個家庭一個就能夠了。因此這裏就使用了單例模式來處理的。

凱哥我的博客:www.kaigejava.com

凱哥公衆號:凱哥Java(kaigejava)

在測試類中:

咱們調用了準備及播放功能。運行結果:

咱們發現,對外提供接口解耦提升了。

相關文章
相關標籤/搜索