设计模式原则23----门面模式

个人博客:打开链接

一、定义

要求一个子系统的外部与其内部的通讯必须通过一个统一的对象进行,门面模式提供一个高层次的接口,使得子系统更容易使用。
门面模式注重“统一的对象”,也就是说 提供了一个访问子系统的接口,除了这个接口,不允许有任何访子系统的行为发生。

二、类图

这里写图片描述
更简单的说,门面对象就是外界访问子系统内部的唯一通道,不管子系统是多么的杂乱无章,只要门面对象在,就可以做到“金玉其外,败絮其中”,也就是说该角色没有实际的业务逻辑,只是一个委托类。
Facade门面角色:客户端可以调用这个角色的方法。
subsystem子系统角色:可以同时有一个或者多个子系统,子系统并不知道门面的存在,对子系统而言,门面只是另外一个客户端而已。
门面:

public class Facade {
    private ClassA a = new ClassA();
    private ClassB b = new ClassB();
    private ClassC c = new ClassC();

    public void execute(){
        a.methodA();
        b.methodB();
        c.methodC();
    }

}

子系统:

public class ClassA {

    public void methodA() {
        System.out.println("执行子系统下A类的方法!");
    }

}
public class ClassB {

    public void methodB() {
        System.out.println("执行子系统下B类的方法!");
    }

}
public class ClassC {

    public void methodC() {
        System.out.println("执行子系统下C类的方法!");
    }

}

场景:

public class Client {
    public static void main(String[] args) {
        // 创建门面对象
        new Facade().execute();
    }
}

三、门面模式的应用

门面模式的优点

  • 减少系统的相互依赖
  • 提高了灵活性
  • 提高了安全性

门面模式的缺点

  • 最大的不符合开闭原则

四、门面模式的使用场景

  • 为一个复杂的模块或者子系统提供一个共外界访问的接口
  • 子系统相对独立–外界对子系统的访问只需要黑箱操作即可
  • 预防低水平人员带来的风险扩散–降低个人代码质量对整体项目的影响风险

五、门面模式额注意事项

  • 一个子系统可以有多少门面
  • 一般情况下一个就够了

多个门面的使用情况

  • 子系统已经庞大到不能忍受的地步
  • 子系统可以提供不同的访问路径
  • 门面不参与子系统内的业务逻辑
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的凯尔森同学

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值