一:
???? 一個(gè)看dvd的例子:通常做法:先調(diào)節(jié)燈光,調(diào)節(jié)屏幕,調(diào)節(jié)投影儀,調(diào)節(jié)功放,然后才是開(kāi)DVD.
????

light.dim(10);

screen.down();

projector.on();
projector.setInput(dvd);

amp.on();
amp.setVolume(5);

dvd.on();
dvd.playMovie();??? 這其實(shí)是一個(gè)比較普通的完整需求,這確涉及到五六個(gè)類,如果直接給這樣的接口給client,十分不方便,我們應(yīng)該根據(jù)需求,把細(xì)節(jié)包裝起來(lái),直接提供一個(gè)showMovie(包裝以上實(shí)現(xiàn))的方法給客戶端。
? The Facade Pattern provides a unified interface to a set of interfaces?in a?subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.?
? when:
?1.為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口
?? (1:用一個(gè)方法包裝不同類的多個(gè)方法。2:把一個(gè)邏輯模塊類接口集中到一個(gè)類)
?2.子系統(tǒng)的獨(dú)立性,將一個(gè)子系統(tǒng)與它的客戶端以及其它子系統(tǒng)分開(kāi),可提高子系統(tǒng)的獨(dú)立性和可移植性
?3.? 層次化結(jié)構(gòu),簡(jiǎn)化層與層直接的依賴關(guān)系。