外观模式【设计模式-结构型模式】

外观模式

定义

  外观模式是迪米特法则思想实现的经典模式之一,又名门面模式,是一种为多个复杂的子系统提供统一的接口,从而让使用这些子系统客户更加容易访问,该模式对外有一个统一的接口,外部人员不用关心内部子系统具体实现细节与用法,这样大大降低了使用子系统的复杂程度,提高可维护性。

理解

  比如你要投资基金,但是你对股票、期权、债券等(子系统)都不理解,这时你需要一个懂行的人来帮助你投资,这个人是基金经理(外观角色),你不需要知道具体怎么去投资,只要把资金给经理即可。

角色

  • 外观角色:为多个子系统提供统一的外观角色
  • 子系统角色:实现系统的各个部分功能,可以通过外观角色来访问它

案例

  小明爷爷年纪大了,老人家每天都要开灯、开电视机、关灯、关电视机…等,于是小明给爷爷买了个智能音箱,爷爷只要对音箱说开电视、开灯、关电视、关灯…等即可

案例实现

1。子系统角色

//电视机
public class TV {
    public void on() {
        System.out.println("打开电视机");
    }
    public void off() {
        System.out.println("关闭电视机");
    }
}
//灯
public class Light {
    public void on() {
        System.out.println("开灯");
    }
    public void off() {
        System.out.println("关灯");
    }
}

2.外观角色

public class SmartFacade {
    private Light light;
    private TV tv;

    public SmartFacade(Light light, TV tv) {
        this.light = light;
        this.tv = tv;
    }

    public void sayOn() {
        light.on();
        tv.on();
    }

    public void sayOff() {
        light.off();
        tv.off();
    }
}

3.测试类

public class ClientTest {
    public static void main(String[] args) {
        SmartFacade smartFacade = new SmartFacade(new Light(), new TV());
        smartFacade.sayOn();//开灯 '/n' 打开电视机
        smartFacade.sayOff();//关灯 '/n' 关闭电视机
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值