栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

【学懂23种设计模式】外观模式

Java 更新时间:发布时间: 百科书网 趣学号

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

汇总目录链接:【学懂23种设计模式】学习目录

文章目录
    • 一、简介
    • 二、实例
      • 1、外观类(Facade)
      • 2、子系统角色A(SubSystemA)
      • 3、子系统角色B(SubSystemB)
      • 4、测试类
    • 三、总结
      • 1、优点
      • 2、缺点
      • 3、应用场景

一、简介

  外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

  它的组成:

  • 外观角色(Facade):为多个子系统对外提供一个共同的接口。外观角色知晓相关的子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。

  • 子系统角色(SubSystem):实现系统的部分功能,客户可以通过外观角色访问它。每个子系统都可以被客户端直接调用,或者被外观角色调用。子系统并不知道外观的存在,对于子系统而言,外观仅仅是另外一个客户端而已。

二、实例

  外观模式还是挺常用的,Spring Jdbc、Mybatis、Tomcat 、SLF4J 中都有外观模式的身影。

1、外观类(Facade)
public class Facade {
    //被委托的对象
    SubSystemA a;
    SubSystemB b;

    public Facade() {
        a = new SubSystemA();
        b = new SubSystemB();
    }

    //提供给外部访问的方法
    public void methodA() {
        this.a.doSomethingA();
    }

    public void methodB() {
        this.b.doSomethingB();
    }
}
2、子系统角色A(SubSystemA)
public class SubSystemA {
    public void doSomethingA() {
        System.out.println("子系统方法A");
    }
}
3、子系统角色B(SubSystemB)
public class SubSystemB {
    public void doSomethingB() {
        System.out.println("子系统方法B");
    }
}
4、测试类
public class Main {
    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
    }
}

控制台输出:

子系统方法A
子系统方法B
三、总结 1、优点
  • 减少了系统的相互依赖。
  • 提高了灵活性。不管系统内部如何变化,只要不影响到外观对象,任你自由活动。
  • 提高了安全性。想让你访问子系统的哪些业务就开通哪些逻辑,不在外观上开通的方法,你就访问不到。
2、缺点
  • 不符合开闭原则,修改很麻烦,继承重写都不合适。
3、应用场景
  • 为一个复杂的模块或子系统提供一个外界访问的接口。
  • 子系统相对独立,外界对子系统的访问只要黑箱操作即可。
  • 预防低水平人员带来的风险扩散。
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/273983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号