デザインモード(八)--外観モード


詳細
外観モード:サブシステムの多くのインタフェースにアクセスするための統一されたインタフェースを提供し、外観は上位インタフェースを定義し、サブシステムをより使いやすくします.
 
意図:インタフェースをより簡単にします.
 
public interface Light {
    void on();
    void off();
    void dim();
}

 
public interface Screen {
    void up();
    void down();
}

 
public interface DvdPlayer {
    void on();
    void off();
    void pause();
}

 
 
/**
 *      
 * Created by Administrator on 2018/1/9.
 */
public class HomeTheaterFacade {
    private Screen screen;
    private DvdPlayer dvdPlayer;
    private Light light;

    public HomeTheaterFacade(Screen screen, DvdPlayer dvdPlayer, Light light) {
        this.screen = screen;
        this.dvdPlayer = dvdPlayer;
        this.light = light;
    }

    /**
     *     ,
     *              ,         
     * **/
    public void watchMovie(){
        screen.down();
        dvdPlayer.on();
        light.dim();
    }

    public void endMovie(){
        screen.up();
        dvdPlayer.off();
        light.on();
    }

}

 
public class TestFacade {
    public static void main(String[] args) {
        // screen ,light              
        HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade(screen,dvdplayer,light);
        homeTheaterFacade.watchMovie();
        homeTheaterFacade.endMovie();
    }
}