码迷,mamicode.com
首页 > 其他好文 > 详细

外观模式

时间:2018-05-10 23:35:23      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:ade   code   调用   屏幕   auth   访问   一起   总结   public   

模式定义

提供了一个统一的接口,用于访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。

示例

家庭影院看电影涉及到灯,DVD还有屏幕等对象,每个对象中都提供不同的操作该对象的方法。如果使用子对象去实现看电影的操作这样涉及到的对象很多,而且和子对象完全耦合在一起了。所以需要使用外观模式进行子对象的封装处理,我们调用就调用外观模式中提供的统一方法,实现和子系统中的解耦操作。


/**
 * 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();
    }
}

总结

  • 外观模式将客户从复杂的子系统中解耦出来
  • 实现一个外观需要将子系统组合进外观中,然后将工作委托给子系统执行

    涉及原则

  • 最少知识原则,不要让太多的类耦合在一起,免得修改其中一部分会影响到其他部分。

外观模式

标签:ade   code   调用   屏幕   auth   访问   一起   总结   public   

原文地址:https://www.cnblogs.com/coliz/p/9021987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!