首页 > 其他 > 详细

设计模式(9)外观模式

时间:2019-03-18 00:42:33      阅读:213      评论:0      收藏:0      [点我收藏+]

我们每天上班回到家的时候都会做一系列的动作,像打开灯、打开电视和打开音响,用代码描述就如下一样。

技术分享图片
public class Light {
    public void on() {
        System.out.println("打开了灯!");
    }

    public void off() {
        System.out.println("关闭了灯!");
    }
}
Light
技术分享图片
public class Redio {
    public void on() {
        System.out.println("打开了音箱!");
    }

    public void off() {
        System.out.println("关闭了音箱!");
    }
}
Redio
技术分享图片
public class TV {
    public void on() {
        System.out.println("打开了电视!");
    }

    public void off() {
        System.out.println("关闭了电视!");
    }
}
TV

测试代码

public static void main(String[] args) {
        Light light = new Light();
        Redio redio = new Redio();
        TV tv = new TV();

        System.out.println("回到了家");
        light.on();
        redio.on();
        tv.on();

        System.out.println("要离开家了");
        light.off();
        redio.off();
        tv.off();
    }

测试结果

技术分享图片

我们发现,回到家需要打开这么多东西,这对于上班回来疲惫的我们实在是太过于煎熬了,那能不能一下子就把所有的动作都执行了呢?方法是有的,就是使用外观模式,我们只需要执行回家这个动作,就能实现这一系列的动作,做一个总和的操作。

技术分享图片

添加的代码如下

技术分享图片
public class HomeAction {

    private Light light;

    private TV tv;

    private Redio redio;

    public HomeAction(Light light, TV tv, Redio redio) {
        this.light = light;
        this.tv = tv;
        this.redio = redio;
    }

    public void getHome() {
        light.on();
        tv.on();
        redio.on();
    }

    public void leaveHome() {
        light.off();
        tv.off();
        redio.off();
    }
}
HomeAction

测试代码

public static void main(String[] args) {
        Light light = new Light();
        Redio redio = new Redio();
        TV tv = new TV();

        HomeAction homeAction = new HomeAction(light, tv, redio);
        System.out.println("回到了家");
        homeAction.getHome();
        System.out.println("要离开家了");
        homeAction.leaveHome();
    }

测试结果

技术分享图片

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

外观模式并不是用来给接口添加新的功能,它是用减少外部和子系统的交互,松散耦合,从而让外部能够更简单地使用子系统。

设计模式(9)外观模式

原文:https://www.cnblogs.com/oeleven/p/10549869.html

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