首页 > 其他 > 详细

外观模式

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

模式定义

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

示例

家庭影院看电影涉及到灯,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();
    }
}

总结

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

    涉及原则

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

外观模式

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!