提供了一個統一的接口,用於訪問子系統中的一羣接口,外觀定義了一個高層接口,讓子系統更容易使用。java
家庭影院看電影涉及到燈,DVD還有屏幕等對象,每一個對象中都提供不一樣的操做該對象的方法。若是使用子對象去實現看電影的操做這樣涉及到的對象不少,並且和子對象徹底耦合在一塊兒了。因此須要使用外觀模式進行子對象的封裝處理,咱們調用就調用外觀模式中提供的統一方法,實現和子系統中的解耦操做。this
/** * DVD * * @author Colin * @create 2018-05-10 **/ public class DvdPlayer { public void on(){ System.out.println("打開DVD"); } public void off(){ System.out.println("關閉DVD"); } } /** * 燈具 * * @author Colin * @create 2018-05-10 **/ public class Light { public void on(){ System.out.println("開燈"); } public void off(){ System.out.println("關燈"); } } /** * 屏幕 * * @author Colin * @create 2018-05-10 **/ public class Screen { public void on(){ System.out.println("打開屏幕"); } public void off(){ System.out.println("關閉屏幕"); } } /** * 家庭影院 * * @author Colin * @create 2018-05-10 **/ public class HomeMovieFacade { private DvdPlayer dvdPlayer; private Light light; private Screen screen; public HomeMovieFacade(DvdPlayer dvdPlayer,Light light,Screen screen){ this.dvdPlayer=dvdPlayer; this.light=light; this.screen=screen; } public void watchMovie(){ light.off(); dvdPlayer.on(); screen.on(); } }
實現一個外觀須要將子系統組合進外觀中,而後將工做委託給子系統執行code
涉及原則對象
最少知識原則,不要讓太多的類耦合在一塊兒,省得修改其中一部分會影響到其餘部分。接口