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

GoF设计模式——外观模式 外观模式是一种结构型设计模式,旨在简化复杂子系统的调用。它通过提供一个统一的入口点,封装多个子系统的交互细节,降低客户端代码复杂度。典型应用场景包括智能家居控制、数据库操作封装(如Spring的JdbcTemplate)、日志门面(如SLF4J)等。该模式的核心价值在于:1)隐藏子系统复杂性;2)降低客户端与子系统的耦合;3)提供清晰的调用接口。与适配器、代理等模式不同,外观模式的重点是简化而非转换或控制访问。当系统存在多个需要协同的子系统时,使用外观模式能显著提升代码可维护性。 阅读详情

前言

外观模式(Facade),提供一个高层次的接口,隐藏系统的复杂性,使得子系统更易于使用。

 

 

具体实现

子系统类 :

public class SubSystemA {

    public void methodA(){
        System.out.println("执行子系统方法A");
    }
}
public class SubSystemB {

    public void methodB(){
        System.out.println("执行子系统方法B");
    }
}
public class SubSystemC {

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

外观类:

public class Facade {
    private final SubSystemA subSystemA;
    private final SubSystemB subSystemB;
    private final SubSystemC subSystemC;

    public Facade(){
        subSystemA = new SubSystemA();
        subSystemB = new SubSystemB();
        subSystemC = new SubSystemC();
    }

    public void method(){
        subSystemA.methodA();
        subSystemB.methodB();
        subSystemC.methodC();
    }
}
@SpringBootTest
class FacadeDemoApplicationTests {

	@Test
	void contextLoads() {
		Facade facade = new Facade();
		facade.method();
	}

}

 

优缺点

优点

  • 降低了客户端与子系统的耦合关系。
  • 让子系统更加易用,客户端不再需要了解子系统内部的实现。
  • 提高了安全性,例如有些方法是对系统外的,有些方法是系统内部使用的,把需要暴露给外部的功能集中到外观中,这样既方便客户端使用,也很好地隐藏了内部的细节。

缺点

  • 不符合“开闭原则”,新增子系统时需要修改外观类。

 

源码

https://download.youkuaiyun.com/download/javanbme/63206958 

SAP 批量处理分包事后调整:BAPI_GOODSMVT_CREATE 关键参数与避坑指南 本文详细解析了SAP系统中使用BAPI_GOODSMVT_CREATE进行分包事后批量调整的关键参数配置与常见错误排查。重点介绍了GOODSMVT_CODE设置为'07'的必要性、GOODSMVT_ITEM结构体的正确配置方法,以及如何避免M7384、M7386等常见错误,帮助用户高效处理分包业务中的数量调整问题。 阅读详情

相关推荐

RV1106G3的fastboot调试

本文详细描述了在幸狐的Luckfox Pico Ultra硬件平台上,使用官方SDK进行系统优化和YOLOv5s模型部署的过程。首先,硬件板卡使用幸狐的SDK进行EMMC非Fastboot配置时功能正常,但Fastboot配置编译失败,通过修改设备树中的ramdisk大小解决了编译问题,但运行时仍报错。幸狐提供的Fastboot烧录文件可正常运行,表明硬件支持Fastboot。随后,使用官方SDK版本rv1106_rv1103_240813进行编译和调试,发现EMMC Fastboot启动失败,通过修改U-

fzktongyong的博客 2357

②基础篇-类的五大特性&代码块&可变参数

封装 将程序封装到类中,通过权限修饰符[ private / default / protected / public ]进行访问权限限制 继承 关系 【类与类】 隐藏:子类通过[super]关键字访问父类构造方法 【抽象类与抽象类】 【抽象类与类】 【抽象类与接口】 【接口与接口】 【接口与类】 优点:公共代码作用域提升并合并,统一管理,提高复用性 缺点:类是单继承的,继承侵略性强,提高耦合度 同名成员如何区分访问 [this]代表当前类 [super]代表当前父类 注意:this()和su

雷鑫宇的博客 487

一文入门Qwen-Agent【附实战代码】

Qwen-Agent 是一个开源框架,用于开发基于 Qwen 模型的 AI 智能体应用,一文带你入门使用

m0_55303420的博客 1875

五万字详解“GoF”的23种设计模式

大家好,我是栗筝i,近期我总结梳理了 “GoF”的 23 种设计模式,并使用 Java 对每种设计模式都进行了伪代码与 Demo 实现,并总结了每种设计模式的应用场景,优缺点,UML图等相关内容,字/词数达到了5万,希望对大家有所帮助~~

栗筝i的博客 4167

切比雪夫(最小区域法)直线拟合算法

切比雪夫,最小区域法直线拟合

闪电彬彬的博客 3962

Linux密码破解(使用hydra工具和使用john暴力破解)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、使用hydra离线破解linux密码1.准备实验环境2.创建用户名字典3.hydra密码爆破二、复制shadow文件,使用john暴力破解1.实验环境1.复制linux的shadow文件2.john暴力破解 一、使用hydra离线破解linux密码 1.准备实验环境 ①攻击机:kali_linux 2021.2(ifconfig查询IP地址:192.168.119.132) ②靶机:Ubantu 16.04(ifconfig

weixin_46447549的博客 2万+

设计模式Python版 外观模式

介绍了GOF设计模式中的外观模式,用Python实现外观模式的示例,以及抽象外观类和抽象外观类的示例。

分享、交流、合作 1409

从零开始,用Cadence Virtuoso手把手仿真一个1.5V LDO(附完整电路与仿真脚本)

本文详细介绍了如何使用Cadence Virtuoso从零开始仿真一个1.5V LDO,包括环境准备、电路导入、Testbench构建、核心仿真类型分析以及高级调试技巧。通过完整的电路与仿真脚本,帮助读者掌握LDO设计与仿真的关键技术,提升电路设计能力。

weixin_31309419的博客 445

详解设计模式:外观模式

外观模式(Facade Pattern),又称为门面模式,是 GoF 的 23 种设计模式中的一种结构型设计模式。 外观模式 是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。 本篇内容包括:关于外观模式、外观模式实现 Demo

栗筝i的博客 3695

AI测试入门:如何测试AI对话模型/智能体?「详细介绍」

作为测试人员,我们需要掌握特定的技能和方法来有效地测试这些复杂的AI对话模型和智能体。传统的软件测试方法在这里可能不再完全适用,我们需要开发新的测试策略和技术来应对AI系统的独特特性。在这篇文章中,我们将深入探讨如何测试AI对话模型和智能体。

blues_C的博客 6859

9篇1章1节:中国居民健康与营养调查(CHNS)数据库的官网解析和数据下载(2026年版)

在探讨中国社会经济转型与人口健康变迁的学术领域中,中国健康与营养调查(CHNS) 是一个无法绕过的权威数据库。本文将带你深入了解CHNS的项目背景、庞大的数据体系,以及如何通过这两个核心网站获取关键的家庭、个人及社区层面的研究数据。

MD Code 1699

玄子Share 设计模式 GOF 全23种 + 七大设计原则

此文主要内容为,面向对象七大设计原则(OOD Principle),GOF(Gang Of Four)23种设计模式,拓展的两个设计模式,简单工厂模式(Simple Factory Pattern),空对象模式(Null Object Pattern),以及工厂模式与策略模式(Factory And Strategy Pattern)之间的区别,两个设计模式较为相似,细节上需要分清,每个设计模式都分为了八步介绍,先对设计模式进行简单介绍,尽量一句话概述,方便记忆,再以现实生活中的场景举例,抛出问题解决问题

qq_62283694的博客 3442

【KingSCADA】如何创建新应用

KingSCADA3.8集成开发环境是基于工程的应用管理模式,实现了对多个应用的集中开发和管理的功能,一个工程可以同时管理多个应用,即在KingSCADA3.8工程设计器中可以同时对多个应用进行开发,应用之间可以实现相互复制、粘贴等功能,大大提高了开发效率。(此处感觉和VS类似)使用KingSCADA3.8开发的系统称为应用,一个完整的应用一般包含以下部分或全部内容:IO设备、IO采集点、图形界面、动画链接、趋势曲线、报警和事件、历史记录、数据库、Web Server等部分。

做有价值的事,积累有价值的笔记! 3108

Java设计模式——GoF设计模式

一、GoF设计模式简介 本节内容参考《Java设计模式》@刘伟 编著,清华大学出版社出版,设计模式详解请参考原书。 1.GoF 的 23 种模式一览表 范围/目的 创建型模式 结构型模式 行为型模式 类模式 工厂方法模式 (类)适配器模式 解释器模式 模板方法模式 对象模式 抽象工厂模式 建造者模式 原型模式 单例模式 (对象)适配器模式 桥接模式 组合模式

weixin_40587145的博客 3273

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

GOF设计模式

GOF设计模式解析

qq_40798472的博客 530

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

GOF设计模式简介

1.简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可...

yoyoseng的博客 873

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

GOF23设计模式-结构型模式6-外观模式(Facade)

GOF23设计模式-结构型模式6-外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。

Tumbler 245

GOF23设计模式之外观模式

外观模式(Facade Pattern)指隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口的设计模式模式。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 其核心就是将复杂业务封装为统一接口,便于其它使用的地方调用。其实外观模式用的很频繁,开发时不经意间可能就用上了。使用它也是为了降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。比如开发之中用常见的MVC

minantadd的博客 224

GoF23种设计模式之结构型模式之外观模式

一、概述         为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 二、适用性 1.当你要为一个复杂子系统提供一个简单接口的时候。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。外观模式可以提

leverli的专栏 1777

GoF的23种设计模式

一、设计模式的分类 1.根据模式的目的:即模式是用来完成什么工作的,这种方式分为创建型模式、结构型模式和行为型模式。 (1)创建型模式:用于描述怎么样创建对象,主要特点是:将对象的创建和使用分离,GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 (2)结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。 (3)行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的

tangyin_007的博客 1162

[设计模式-1]23种GOF设计模式及7大原则概述

java 设计模式 原则

心流时间的博客 1421

GOF设计模式之外观模式(结构型代理模式)

1、减少系统相互依赖:降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。2、提高灵活性:降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程,因为编译一个子系统不会影响其他的子系统,也不会影响外观对象。3、提高了安全性:对客户屏蔽了子系统组件的内部构造和逻辑。1、不符合开闭原则,增加新的子系统可能需要修改外观类或客户端的源代码(特殊情况下会很麻烦),继承重写都不合适。2、不能很好地限制客户使用子系统类,很容易带来未知风险。...

龙飞的博客 6209

GOF 面向对象 23 种设计模式详解

GOF 设计模式 笔记总结自 GOF 的 《Design Patterns - Elements of Reusable Object-Oriented Software》,Erich Gamma、Richard Helm、Ralph Johnson 、John Vlissides 4 位作者基于基于面向对象设计原则提出了一下的基本观点: 对接口编程而非对实现编程; 优先使用

Al_assad的博客 4348

GOF23种设计模式

设计模式

C/C++ 1340

23种GoF设计模式

GoF(Gang of Four)设计模式是由四位计算机科学家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的书籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的设计模式

笔记 1371

GOF23设计模式之外观模式(facade)

一、外观模式概述   外观模式也称为门面模式。   核心:为了系统提供统一的入口,封装子系统的复杂性,便于客户端调用。 二、外观模式场景导入与示例代码   场景:要想自己去注册一个公司,首先去工商局检测命名是否合法,再去质量监督局办理组织机构代码证,再去税务局办理税务登记,最后去工商银行开户。但是使用外观模式,只需要去注册公司的门面,里边的工作人员就会去办理上述证件,简单方便!...

dcpvpf6917的博客 230
上一篇: GoF设计模式(七) - 装饰者模式
下一篇: GoF设计模式(十一) - 组合模式
让程序飞
博客等级 码龄10年 8831粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

让程序飞

您的鼓励将是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值