结构型模式之外观模式(Facade)

设计模式(九)外观模式Facade(结构型) 设计模式--外观模式Facade(结构型): 1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。 例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计。 2.... 阅读详情

外观模式,作用在于降低客户端与复杂子系统之间的耦合依赖关系。

通常一个软件系统由多个相互联系的子系统或相互联系的组件构成,客户端在使用系统的时候需要按照一定的协议去以此调用不同的子系统,进而完成一个完整的业务操作。

然而,子系统会升级,也可能被其它子系统吞并,子系统间的依赖规则可能发生变化,如此一来就必需通知客户端作出改变,这种设计不利于程序的扩展和维护。

使用外观模式,将原先对子系统的一系列调用封装到一个独立的接口中供客户端调用,客户端只需要与此接口交互,而无需关系其后面的复杂的子系统关系。

外观模式,由于其屏蔽子系统复杂性对外统一提供接口的特性,经常用于分层架构设计、模块化架构设计、交互性架构设计等。

外观模式,体现的是一种封装思想,我们经常在不经意间就会使用到。


MVC场景:系统分为三个逻辑模块(或子系统),模型:依据传入的数据,构造合适的数据模型;视图:依据数据模型,渲染出客户端需要的界面;控制器:依据用户的输入协调数据模型与视图模型的工作,要求:简单起见,用户只与控制层交互,根据用户的输入返回相应的视图,不关心模型、视图等其它组件。


设计:

示例代码:

class Model {
    private String data;
    public String getData() {
        return data;
    }
    public Model doModel(String data) {
        this.data = "处理后的" + data;
        return this;
    }
}
class View {
    private Model model;
    public View(Model model) {
        this.model = model;
    }
    public String show() {
        return "<html>" + model.getData() + "</html>";
    }
}
class Controller {
    // 外观模式的体现
    public String action(String input) {// 外观模式,封装了下面一系列的操作
        Model model = new Model().doModel(input);//若不使用外观模式,则需客户端自行调用
        View view = new View(model);             //若不使用外观模式,则需客户端自行调用
        String result = view.show();             //若不使用外观模式,则需客户端自行调用
        return result;
    }
}

public class Test {
    public static void main(String[] args) {
        Controller controller = new Controller();
        System.out.println(controller.action("数据"));
    }
}


MatterPort3D 数据集下载 【代码】MatterPort3D 数据集下载。 阅读详情

相关推荐

汽车底盘技术解析:从悬架调校到智能化,如何评价国产车底盘实力

汽车底盘作为决定车辆驾驶质感、安全性和耐久性的核心系统,其技术内涵远不止于悬架结构。从行驶系、转向系到制动系的协同工作,底盘调校是一门融合机械原理与工程实践的艺术。在电动化与智能化浪潮下,底盘技术正经历从被动适应到主动响应的变革,CDC可变阻尼减震器和空气悬架等技术的应用,让底盘具备了通过OTA升级实现性能优化的可能。国产汽车品牌如奇瑞、吉利等,通过平台化架构研发与调校经验积累,正推动底盘技术从“能用”向“好用”乃至“塑造独特驾驶风格”迈进。理解底盘技术,需超越简单的结构对比,关注其在实际路况中的滤震性、支

weixin_34413103的博客 387

【c++设计模式13】结构型5:外观模式(Facade Pattern)

外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个简化的接口,用于访问复杂系统中的一组接口。外观模式通过创建一个高层次的接口,封装了底层系统的复杂性,使得客户端可以更加方便地使用系统。

junxuezheng的博客 2148

从零构建eSIM RSP服务:云原生架构与GSMA合规实践

本文详细阐述了从零开始构建一个符合GSMA SAS-SM安全标准的云原生eSIM RSP服务的完整路径。内容涵盖云原生基础设施选型、容器化部署、GSMA标准接口集成,并重点分享了通过SAS-SM安全审计的实战经验与避坑指南,为物联网及智能设备企业自建可控的远程SIM配置服务提供了系统性的解决方案。

weixin_29322553的博客 459

结构型模式(五)门面模式(Facade Pattern 外观模式)

一、模式定义 门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。 二、模式动机 现代的软件系统都非常复杂,尽管我们已经想尽一切方法将其“分而治之”,把一个系统划分为好几个较小的子系统了,但是仍然可能会存在这样的问题:子系统内有非常多的类,客户端往往需要和许多对象打交道之后 才能完成想要完成的功能。 在我们的生活中

张井天的博客 5962

Win11桌面图标小箭头去除与恢复:解决任务栏关联错误的完整指南

本文提供了一份完整的Win11桌面图标小箭头去除与恢复指南,重点解决了因错误方法导致的任务栏关联错误问题。通过分析注册表中IsShortcut键值与Shell Icons的原理,推荐安全的“替换图标资源法”,并提供了可一键执行的批处理脚本,确保在美化桌面的同时不影响系统功能与默认应用设置。

weixin_29288313的博客 944

Transformers在自动驾驶领域的应用(High-level like in scene)

Transformers uses global attention mechanism to capture long-range interaction information. Two core modules in Transformers are Self-Attention and Cross-Attention, which defined asAttn(Q,K,V)=softmax(QK⊤dk)VSelfAttn(X)=Attn(WQX,WKX,WVX)CrossAttn(X,Y)=Attn

qq_39337332的博客 1776

十一、结构型 外观模式(Facade Pattern)

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。形状接口 形状实现类 外观类 测试类 结果: 参考: https://www.runoob.com/design-pattern/design-pattern-intro.html...

逆流者的博客 235

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

8.9华为OD机试真题 新系统 - 灯带颜色变换 (Java/Py/C/C++/Js/Go)

算法大师! 670

结构型模式:⑤外观模式(Facade Pattern)

1.最少知识原则:客户端只需了解外观,无需了解子系统内部组件;2.单一职责原则:外观负责协调子系统,子系统负责自身功能,职责清晰;3.开闭原则:扩展子系统时(如新增组件),只需修改外观,无需修改客户端和现有子系统。

ada0_ada1的博客 370

V90伺服 EPOS模式下回原(详细配置+SCL源代码)

/ 输出上限 100.0%rSetPoint : Real;// 设置目标值工程量。// 通道转换参考值。Td : Real;

RXXW_Dor的博客 2665

EML 全面实践指南:把 SAP RAP 业务对象玩出工程化的稳定与优雅

本文面向掌握ABAP基础、正在实施RAP的开发者,深入讲解EML(Entity Manipulation Language)的核心用法。文章围绕READ ENTITIES、MODIFY ENTITIES、COMMIT ENTITIES三大语句,详细解析其语义、类型体系、事务机制及工程实践。重点内容包括:字段裁剪、派生类型、草稿控制、批量更新、事务缓冲与保存序列等关键技术点,并配合真实案例代码。旨在帮助开发者在SAP ABAP On-Premise和BTP环境中构建可维护、可演进的业务对象访问层,同时避免常见

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 329

结构型模式——外观模式(Facade Pattern)

外观模式(Facade Pattern)是使用普遍的模式,经典的MVC三层架构便是最好的例子。 该模式的思路简单来说,就是将一些列类的使用,通过一层类进行包装,以便于客户端的使用。

qq_46658171的博客 505

基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 云平台: 采用中国移动OneNet. 也可以采用腾讯、阿里云、华为云、百度天工物接入、机智云等等。 前面文章有讲解。 协议: 采用MQTT协议 开发软件:keil5 完整项目源码下载:https://download.youkuaiyun.com/download/xiaolong1126626497/19766925 二、包含的硬件与实...

1万+

结构型模式--外观模式【Facade Pattern】

结构型模式–外观模式【Facade Pattern】 外观模式的定义与特点 外观(Facade)模式的定义: 是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。 外观(Facade)模式是“迪米特法则”的典型应用,它有以下主要优点 降低...

thebigdipperbdx的博客 213

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

结构型模式之外观模式(Facade Pattern)

面向对象编程的最大优势,在于它能防止应用程序成为混乱纠缠的小程序。外观模式的意图是为子系统提供一个接口,便于它的使用。 一个外观就是一个类,它包含的功能介于工具包与完整的应用程序之间,为工具包或子系统的类提供了简单的用法。在服务器后台应用程序开发中,通常采用分层的架构,比如Controller-Service-Dao。最近做的一个需求,卖家可以设置10个常用的物流公司来发货。当卖家更新常用物流公司

joenqc的博客 428

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

结构型模式:外观模式(Facade Pattern)

一、设计模式的分类 (如果以前看过关于设计模式的分类的话,这部分可以忽略!) 经过很多大神的总结,目前Java中一共23种经典的设计模式! 按照目的,设计模式可以分为以下三种用途: 1.创建型模式:用来处理对象的创建过程 2.结构型模式:用来处理类或者对象的组合 3.行为型模式:用来对类或对象怎样交互和怎样分配职责进行描述 创建型模式用来处理对象的创建

未来,你好! 721

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

**外观模式(Facade Pattern)**,它是结构型设计模式之一,核心在于为复杂子系统提供一个简化、统一的接口

🔍 **关键辨析点:** - **外观不隐藏“谁在干活”,而是隐藏“怎么一起干活”**; - **代理不简化“做什么”,而是控制“何时/如何/能否做”**。 例如:`VideoPlayerFacade.play()` 封装了视频解码、音频解码、字幕渲染三步调用;而 `ImageProxy.load()` 在首次调用时才真正创建并加载 `RealImage`,接口签名(`load()`)与 `RealImage` 完全一致——这就是代理的“透明性”。

[Blog][Domain] programb.blog.youkuaiyun.com 579

【C#设计模式】10.外观模式(Facade Pattern)【结构型】

1.1 动机(Motivate) 在软件系统开发的过程中,当组件的客户(即外部接口,或客户程序)和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦? 1.2 意图(Intent) 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。      ——《设计模式》GoF .........

星Yeah 的博客 2005

外观模式(Facade Pattern)-结构型模式

1. 概述   为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 2. 模式中的角色   2.1 外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求代理给恰当的子系统对象。   2.2 子系统类集合(SubSystem Classes):子系统类集合实现了子系统的功能,处理外观类对象指派的任务。 3. 模式解读

duhuawei123的专栏 280

设计模式 结构型 外观模式(Facade Pattern)与 常见技术框架应用 解析

外观模式(Facade Pattern)是一种结构型设计模式,它的核心思想是将一个复杂的子系统封装在一个外观类中,为子系统提供一个统一的接口。通过这个接口,客户端可以简化对子系统的访问,而无需直接与子系统中的各个组件进行交互。这种设计模式有助于减少系统的复杂性,提高系统的易用性和可维护性。

JINGWHALE 1406

C#设计模式之十外观模式(Facade Pattern)【结构型】

原文:C#设计模式之十外观模式(Facade Pattern)【结构型】 一、引言 快12点半了,要开始今天的写作了。很快,转眼设计模式已经写了十个了,今天我们要讲【结构型】设计模式的第五个模式,该模式是【外观模式】,英文名称是:Facade Pattern。我们先从名字上来理解一下“外观模式”。我看到了“外观”这个词语,就想到了“外表”这个...

weixin_33895516的博客 100

外观模式(Facade Pattern)是一种结构型设计模式,它为一个复杂子系统提供一个统一、简化的接口,使得子系统更易于使用

✅ **适配器模式:面向“协议兼容性”的横向解耦** - **目的**:让**不兼容的接口能够协同工作**,解决接口不匹配问题(如方法名、参数、返回值不同)。 - **解耦方向**:**客户端 ←→ 不兼容的现有类/服务**(即“让旧代码符合新需求”或“让新代码适配旧接口”)。 - **必须转换接口**:Adapter 充当“翻译器”,将目标接口(Target)的请求,转换为被适配者(Adaptee)能理解的形式(可能重命名、组合、参数转换等)。 - **典型场景**:将第三方支付SDK的

[Blog][Domain] programb.blog.youkuaiyun.com 251

【设计模式】结构型模式—外观模式/门面模式(Facade Pattern)(八)

**门面模式(Facade Pattern),又被称之为外观模式。该模式提供一个统一的接口,用来访问相同子系统或者不同子系统之中的一群接口。使得子系统更加容易调用。** - 可以理解为将多个接口功能组合到一个接口中,使得客户只要调用一个接口,而不用调用多个接口就能达到目的。避免外部直接访问具体的业务方法 - 解决多个复杂接口带来的使用困难,起到简化用户操作的作用

墩墩分墩 544

外观模式(Facade Pattern) – 设计模式之结构型模式

外观模式(Facade Pattern) – 设计模式之结构型模式: 目录 外观模式(Facade Pattern) 类图 例子1: 过程: 类图: 代码: 订酒店:Hotel 订飞机:Airport 接送: Charffeur 订景点: TouristSpot 接待外观:ReceptorFacade 测试: 结果: 总结: 使用场景 外观模式(Facade Pattern) 定义: Provide a unified interface to a set of i.

一路向前 391

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

外观模式是一种结构型设计模式,通过定义统一的高层接口来简化复杂系统的交互。它通过封装子系统复杂性,降低客户端与系统的耦合度,使客户端仅需与外观类交互而无需了解内部逻辑。核心角色包括外观类、子系统类和客户端。该模式适用于复杂系统入口、分层架构、第三方库封装等场景,能显著提升系统易用性和可维护性,但也需注意避免过度封装。典型应用包括智能家居控制、Spring框架的Bean管理等。

csdn_tom_168的博客 430

【设计模式】【结构型模式(Structural Patterns)】之外观模式(Facade Pattern)

外观模式是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。通过隐藏子系统的复杂性,外观模式简化了客户端对子系统的使用,提高了系统的易用性和降低了系统的耦合度。

ido1ok的博客 951
上一篇: 结构型模式之代理模式(Proxy 与 JDK动态代理)
下一篇: 创建型模式之原型模式(ProtoType)
conquer0715
博客等级 码龄18年 73粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值