外观模式(门面模式)

一. 定义

外观模式,又称门面模式。提供一个统一的接口,用来访问子系统中的一群接口。其主要特征是使定义了一个高层接口,让子系统更加容易使用

二.代码示例

以下代码模拟一个灯的总开关,通过调用灯的总开关达成对所有灯的开关

1.Light.java

package org.example.log.facade;

public interface Light {
    void on();
    void off();
}

2.BedroomLight.java

package org.example.log.facade;

public class BedroomLight implements Light{
    @Override
    public void on() {
        System.out.println("BedroomLight on");
    }
    @Override
    public void off() {
        System.out.println("BedroomLight off");
    }
}

3.HallLight.java

package org.example.log.facade;

public class HallLight implements Light{
    @Override
    public void on() {
        System.out.println("HallLight on");
    }
    @Override
    public void off() {
        System.out.println("HallLight off");
    }
}

4.LightFacade.java

package org.example.log.facade;

// 外观模式:提供一个统一的接口,用于访问子系统的一群接口
// 主要特征是定义一个高层接口,这个接口使得子系统更加容易使用
public class LightFacade {
    private Light bedroomLight = new BedroomLight();
    private Light hallLight = new HallLight();
    public void lightOn() {
        bedroomLight.on();
        hallLight.on();
    }
    public void lightOff() {
        bedroomLight.off();
        hallLight.off();
    }
}

5.Main.java

package org.example.log.facade;

public class Main {
    public static void main(String[] args) {
        // 通过门面系统调用子系统
        LightFacade lightFacade = new LightFacade();
        lightFacade.lightOn();
        lightFacade.lightOff();
    }
}

运行结果:

三.优点

1.减少系统的相互依赖,实现了子系统和客户端的耦合关系,使得子系统的变化不会影响到客户端

2.提高了灵活性,简化了客户端对子系统的使用难度,客户端无需关系子系统具体实现,只需要和门面对象交互即可

3.提高安全性,不在门面对象中设置访问权限,就无法使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值