設計模式之 外觀模式

2021-08-23 12:33:28 字數 3611 閱讀 5167

就是你在乙個家庭影院的話要開始看電影,你要先開啟***,開啟投影儀,開啟音響,拉下螢幕,開啟爆公尺花……然後開始看電影。

傳統的設計就是真的是乙個乙個的開啟,這樣很繁瑣,而且你看完了還要乙個乙個的關閉。

外觀模式就是提供乙個介面(遙控器),相當於把所有的一次性開啟,所有的一次性關閉,這樣不僅方便,而且解耦和隱藏了具體的每乙個裝置。

具體**實現(用到了一點點單例模式):

首先看各種裝置:

package facade.example.device;

/** */

public

class

***player

public

static ***player getinstance()

public

void

on()

public

void

off()

public

void

play()

public

void

pause()

public

void

set***()

}

package facade.example.device;

/** * 燈光

*/public

class

light

public

static light getinstance()

public

void

on()

public

void

off()

//調暗

public

void

dim(int d)

//調亮

public

void

bright()

}

package facade.example.device;

/** * 爆公尺花機

*/public

class

popcorn

public

static popcorn getinstance()

//三個具體的函式

public

void

on()

public

void

off()

public

void

pop()

}

package facade.example.device;

/** * 投影儀

*/public

class

projector

public

static projector getinstance()

public

void

on()

public

void

off()

public

void

focus()

public

void

zoom(int size)

}

package facade.example.device;

/** * 螢幕

*/public

class

screen

public

static screen getinstance()

public

void

up()

public

void

down()

}

package facade.example.device;

/** * 音響

*/public

class

stereo

public

static stereo getinstance()

public

void

on()

public

void

off()

public

void

setvolume(int volume)

public

void

addvolume()

}public

void

subvolume()}}

再來看最關鍵的這個高層介面:

package facade.example.facade;

import facade.example.device.*;

/** * 外觀模式的主題

* 系統上抽象出來的介面 類似遙控器

*/public

class

hometheate***cade

//用乙個函式呼叫了子系統裡面的很多函式

public

void

ready()

//一次性結束

public

void

end()

public

void

play()

public

void

pause()

}

測試類:

package facade.example.test;

import facade.example.facade.hometheate***cade;

public

class mytest

}

輸出

例如下面的類: 

public

class car

public

void

start(key key)}}

設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...

設計模式之外觀模式

外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...

設計模式之外觀模式

外觀模式,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,層與層之間建立外觀facade。在開發階段,子系統往往因不斷的重構演化而變得越來越複雜,增加外觀模式可以提供乙個簡單的...