前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java设计模式(九)----外观模式

Java设计模式(九)----外观模式

作者头像
汤高
发布于 2018-01-11 09:19:25
发布于 2018-01-11 09:19:25
64100
代码可运行
举报
文章被收录于专栏:积累沉淀积累沉淀
运行总次数:0
代码可运行

外观模式 一、定义 二、结构 三、案例 四、特点

一、定义

Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。

二、结构

门面(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。 子系统(SubSystem)角色 :可以同时有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合(如上面的子系统就是由SystemA、SystemB、SystemC三个类组合而成)。每个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。

三、案例 源代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//子系统(SubSystem)角色
public class SystemA {
    public void doA(){
        System.out.println("子系统A的功能");
    }
}
//子系统(SubSystem)角色
public class SystemB {
    public void doB(){
        System.out.println("子系统B的功能");
    }
}
//子系统(SubSystem)角色
public class SystemC {
    public void doC(){
        System.out.println("子系统C的功能");
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 门面(Facade)角色
 * @author Administrator
 *
 */
public class Facade {
    private SystemA systemA;
    private SystemB systemB;
    private SystemC systemC;

    Facade(){
        systemA=new SystemA();
        systemB=new SystemB();
        systemC=new SystemC();
    }
    // 方法 满足客户端需要的功能
    public void doAB(){
        systemA.doA();
        systemB.doB();
    }
    // 方法 满足客户端需要的功能
    public void doABC(){
        systemA.doA();
        systemB.doB();
        systemC.doC();
    }

}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Client {

    public static void main(String[] args) {
        Facade f=new Facade();
        System.out.println("客户1需要的两个子系统功能");
        f.doAB();
        System.out.println("----------------------");
        System.out.println("客户2需要的三个子系统功能");
        f.doABC();
    }

}

结果: 客户1需要的两个子系统功能 子系统A的功能 子系统B的功能

客户2需要的三个子系统功能 子系统A的功能 子系统B的功能 子系统C的功能

四、特点

1、外观模式为复杂子系统提供了一个简单接口,并不为子系统添加新的功能和行为。 2、外观模式实现了子系统与客户之间的松耦合关系。 3、外观模式没有封装子系统的类,只是提供了简单的接口。 如果应用需要,它并不限制客户使用子系统类。因此可以再系统易用性与通用性之间选择。 4、外观模式注重的是简化接口,它更多的时候是从架构的层次去看整个系统,而并非单个类的层次。

以上内容来自平时所看书籍和网络资源整理测试所得,如有不完善之处,欢迎指正!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-01-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java设计模式之(九)——门面模式
门面模式(Facade Pattern):也叫外观模式,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。 门面模式提供一个高层次的接口,使得子系统更易于使用。
IT可乐
2021/11/29
8350
Java设计模式之(九)——门面模式
Java设计模式学习记录-外观模式
这次要介绍的是外观模式(也称为门面模式),外观模式也属于结构型模式,其实外观模式还是非常好理解的,简单的来讲就是将多个复杂的业务封装成一个方法,在调用此方法时可以不必关系具体执行了哪些业务,而只关心结果即可。这个场景其实在日常开发中使用的频率还是非常高的,下面来简单了解一下吧。
纪莫
2018/08/27
3650
Java设计模式学习记录-外观模式
外观模式
为子系统提供统一的入口。封装子系统的复杂性,便于客户端调用。在一个由多个模块组成的系统中,模块与模块之间就可以通过提供外观模式来进行数据的交互,每个模块只需要暴漏出其他模块感兴趣的数据,这样就达到了各个模块之间数据的隔离。(这就很满足封装的特性:只暴露该暴漏的,其他的就隐藏起来)
帅飞
2019/01/22
4980
Java设计模式之外观模式
外观模式是一种常见的设计模式,它属于结构型模式。该模式提供了一个统一的接口,以隐藏系统的复杂性,并将其与客户端分离开来。在 Java 中,外观模式可以帮助我们简化复杂系统的使用,并提供更简洁的接口供客户端调用。
刺槐儿
2024/01/26
2710
Java 设计模式系列(13) —— 外观模式(门面模式)
外观模式的定义: 要求一个子系统的外部预期内部的通信必须通过一个统一的对象进行,外观模式提供了一个高层次的接口,使得子系统更容易使用
求和小熊猫
2021/01/14
3070
【Java设计模式】015-外观模式
外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
訾博ZiBo
2025/01/06
840
Java设计模式:外观模式之优雅门面(九)
在复杂的软件系统中,往往存在多个子系统或组件协同工作的情况。这些子系统可能由不同的团队开发,使用不同的技术栈,具有各自独特的接口和依赖关系。当客户端需要使用这些子系统时,可能需要了解并调用多个接口,处理复杂的依赖关系,这无疑增加了客户端的使用难度。
公众号:码到三十五
2024/04/10
1850
Java设计模式:外观模式之优雅门面(九)
09.外观模式设计思想
外观模式设计思想:为了解决软件系统中的复杂性和耦合性问题,外观模式提供了一组统一的接口,简化客户端与子系统的交互。主要内容包括外观模式的基础、实现、实例演示、应用场景、优缺点及适用环境。通过创建外观类,将复杂系统的内部实现细节隐藏起来,只暴露出简化的接口给客户端,从而降低耦合度,提高系统的可维护性和可扩展性。
杨充
2024/11/05
790
设计模式之 外观模式
外观模式(又称门面模式),通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。UML类图如下:
BUG弄潮儿
2021/02/03
2720
设计模式之 外观模式
设计模式(九):外观模式
设计模式(九):外观模式
Java架构师必看
2021/04/13
4150
设计模式-外观模式
这是我们平时开发用的最多的模式之一,可以说我们每天都在用这个模式在写代码,只是我们可能没有意识到。
码哥字节
2020/03/24
3970
设计模式-外观模式
外观模式 门面模式 Facade 创建型 设计模式(十三)
随着项目的持续发展,系统基本上都是会往功能更全面的方向发展,那么也就意味着我们的系统将会变得更加复杂。
noteless
2018/12/24
5420
C#设计模式10——外观模式的写法
外观模式(Facade Pattern)又称门面模式,是一种结构型设计模式,它提供了一个统一的接口,用来访问一个子系统中一群功能相关联的接口。外观模式定义了一个高层接口,让子系统更容易使用。
明志德道
2023/10/21
1980
Java描述设计模式(12):外观模式
一、生活场景 1、场景描述 在移动互联网没有普及之前,去饭店吃饭的流程大致如下:选座位,排队,点菜,结账。后来移动互联网普及,通过手机APP就可以操作这些流程,非常的方便快捷:通过手机可以知道某饭店
知了一笑
2019/09/17
5770
Java描述设计模式(12):外观模式
详解设计模式:外观模式
外观模式(Facade Pattern),又称为门面模式,是 GoF 的 23 种设计模式中的一种结构型设计模式。
栗筝i
2022/12/02
4530
详解设计模式:外观模式
图解Java设计模式之外观模式
组建一个家庭影院 : DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 开爆米花机 放下屏幕 开投影仪 开音响 开 DVD,选 dvd 去拿爆米花 调暗灯光 播放 观影结束后,关闭各种设备
海仔
2020/03/26
4910
设计模式——外观模式
设计模式——外观模式
Java架构师必看
2021/05/14
6230
设计模式——外观模式
Java设计模式-外观模式
外观模式: 又称门面模式: 外观Facade为子系统的一组接口提供一个一致界面,使得这组子系统易于使用(通过引入一个新的外观角色降低原系统复杂度,同时降低客户类与子系统的耦合度). 图片来源: 设计
Java帮帮
2018/03/16
1K0
Java设计模式-外观模式
Java面向对象设计之外观模式
根据“单一职责原则”,在软件中将一个系统划分为若干个子系统有利于降低整个系统的复杂性,一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小,而达到该目标的途径之一就是引入一个外观对象,它为子系统的访问提供了一个简单而单一的入口。 外观模式也是“迪米特法则”的体现,通过引入一个新的外观类可以降低原有系统的复杂度,同时降低客户类与子系统类的耦合度。
Abalone
2022/07/14
2660
Java面向对象设计之外观模式
【玩转23种Java设计模式】结构型模式篇:外观模式
  外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
程序员云帆哥
2022/05/12
1630
推荐阅读
相关推荐
Java设计模式之(九)——门面模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验