• 设计模式(9)外观模式


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

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

    测试结果

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

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

  • 相关阅读:
    Android服务器——TomCat服务器的搭建
    Ubuntu16.04 Liunx下同时安装Anaconda2与Anaconda3
    android中代码操作外部SD卡出错:W/System.err(1595): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
    查准率与查全率(precision and recall) 的个人理解
    Python游戏-实现键盘控制功能
    UGUI世界坐标转换为UI本地坐标(游戏Hud的实现)
    LoadRunner中遭遇交互数据加密的处理方案
    [Java]链表的打印,反转与删除
    优化程序性能(3)——提高并行性
    基本排序算法的python实现
  • 原文地址:https://www.cnblogs.com/oeleven/p/10549869.html
Copyright © 2020-2023  润新知