简单理解常用设计模式(八)外观模式(例如客户、基金、用户)

设计模式C++实现(7)——外观模式、组合模式 软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大 阅读详情

这里再记录一个易于理解也非常常用的模式,外观模式。

外观模式:为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更容易使用。

这里以原书的场景为例,即投资人(有闲钱的普通老百姓),想要投资某股票,某国债,某房产,但实际情况他不应该直接和这些金融产物接触,因为投资人并不了解全部的金融产品,于是投资人选择基金,由基金负责人来代替投资人和金融产物打交道,以稳定获利。

原书UML如下:


基金类如下:



调用类如下:


可以看到,投资人(调用者)只要知道基金类即可,调用基金类提供的方法来执行大方向的逻辑,具体逻辑由基金类来调用处理。

使用方式:在开发阶段,子系统(功能)会不断复杂,这样会给调用者带来麻烦,因为调用者需要知道数量繁多的类和方法,这时可以增加一个外观类,来统筹子系统,减少依赖。


编程艺术之源:深入了解设计模式和设计原则 设计模式是软件开发中常用的解决问题的模板,它是通过对软件开发中经常遇到的问题进行总结和抽象产生的。设计模式的基础是面向对象思想和设计原则,通过对这些基础知识的理解,可以更好地学习和应用设计模式。为了有效地学习设计模式,首先需要明确学习的目的,然后按照一定的学习步骤系统学习,才能够真正掌握设计模式的精髓。通过本文的介绍,读者将更加深入地认识设计模式以及学习设计模式的方法。 阅读详情

相关推荐

外观模式示例源代码

简单的外观模式源代码示例,使用c#编写的。用图形界面。很基本的描述了外观模式。

数据库设计

数据库模型:三级模式-两层映射1. 内模式-物理模式文件级,内部视图2. 概念模式--模式表级,物理级数据库,DBA视图3. 外模式- 用户/子模式视图级,用户视图,概念级数据概念模式-内模式映射外模式-概念模式映射 数据库设计过程:1. 需求分析(数据流图, 数据字典,需要说明书)2. 概念结构设计(ER模型)3. 逻辑结构设计 (关系模式)4. 物理设计ER模型反应实体与实体之间的关系。实体之间的关系模式:(1) 1:1 , 一对一的联系可将联系合并至任意一端的实体关系模式中(2) 1:n ,

flysh05的专栏 1850

设计模式之外观模式(Facade Pattern)

为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

数据库7:数据库设计

一、学习目标 二、基本概念 数据库设计概述(生命周期) -两个要求:信息管理要求,数据操作要求 -目标:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境 所谓高效率是指“数据的存取效率高”“存储空间的利用率高”“管理的效率高” -基本规律:三分技术、七分管理、十二分基础数据 -常用数据库设计方法(just学过的) 基于E-R模型的设计方法 3NF的设计方法 ...

karonneveralone的博客 1914

linux应用程序段错误调试

一、堆、栈 在分析段错误之前,先了解一下什么是堆?什么是栈? 堆:一般由开发者分配释放,如果没有释放,程序结束时,在有的OS中可能会被自动释放,分配方式类似于链表。堆的操作方式为,队列优先,先进先出的原则。 栈:由操作系统自动分配,存放函数的参数值,局部变量。栈的操作方式为,先进后出的原则。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。  PUSH:操作在堆栈的顶部加入一个元素...

农村种地人 1111

Element-UI全面入门与实战技巧

Element-UI 是一套基于 Vue 2.0 的桌面端组件库,由饿了么前端团队开发并维护。它提供了一系列丰富的 UI 组件,旨在帮助开发者快速构建高效、美观的 Vue 应用程序。Element-UI 是一款遵循 Ant Design 设计规范的 Vue UI 库,它涵盖了从按钮、输入框、选择器到表格、标签、进度条等众多常用的界面元素。Element-UI 的组件不仅功能全面,而且易于定制,使得开发者可以快速实现个性化的页面设计。Element-UI 的特点包括:在使用 Element-UI 之前,需要确

全世界的博客 2863

设计用户子模式

这部分主要是考虑使用方便性和效率问题,主要借助视图手段实现,包括: (1) 建立视图,使用更符合用户习惯的别名。 (2)对不同级别的用户定义不同的视图,以保证系统的安全性。 (3)对复杂的查询操作,可以定义视图,简化用户对系统的使用。 ...

牛牛码特的博客 3511

DIY压电陶瓷传感器信号放大:从拆解到JFET电路实战(附示波器实测数据)

本文详细介绍了如何利用废旧设备拆解的压电陶瓷片,结合JFET(结型场效应管)高输入阻抗特性,DIY搭建高灵敏度振动传感器放大电路。从元件拆解、参数实测到JFET共源极放大器实战搭建与调试,提供了完整的步骤、示波器实测数据及优化方案,帮助电子爱好者实现低功耗振动检测应用。

weixin_29195615的博客 389

JAVA设计模式总结之23种设计模式(重点!!!)

JAVA设计模式总结之23种设计模式:一、什么是设计模式设计模式遵循的原则有6个:二、设计模式的三个分类三、各分类中模式的关键点四、概说23种设计模式1.单例模式(Singleton)2.工厂方法模式(Factory Method)3.抽象工厂模式 (Abstract Factory)4.建造者模式(Builder)5.原型模式 (Protype)6.适配器模式 (Adapter)7.桥接模式8.组合模式9.装饰模式10.外观模式11.亨元模式12.代理模式13.访问者模式14.模板模式15.策略模式16

LonE li 2070

CAPL编程的催化剂——CAPLdll的实现

CANoe作为一款功能强大的总线开发及测试工具,不仅仅是因为其丰富的库函数,最重要的是其兼容了多种编程语言,可以实现灵活的开发,极大的解决了纯CAPL编程所带来的限制,如通过动态链接库(DLL)来实现复杂函数的编写,使其能够在CAPL中可以调用,下面将对DLL的实现进行分析。capldll.cpp这个文件初看相当复杂,从整体上来说,这段代码主要包含了两部分:自定义函数实现和回调函数定义,今天的主要任务是实现自定义函数,这里的函数定义与普通函数定义差不多,只是利用了CAPL的格式。在VS2017工程中打开。

车载控制器AutoSAR软件开发工程师 4648

产生式系统的完整示例——医疗诊断系统(附python代码)

发烧(Fever)、咳嗽(Cough)、皮疹(Rash)、喉咙痛(SoreThroat)、头痛(Headache)、流涕(RunnyNose)、呼吸困难(ShortnessOfBreath)、白细胞计数高(HighWBC)、接触流感患者(ContactFlu)、接触麻疹患者(ContactMeasles)。(2)若规则库中存在尚未使用过的规则,而且它的前提(前件)可与综合数据库中的已知事实匹配,则转第(3)步;(3)执行当前选中的规则,并对该规则做上标记,把该规则执行后得到的结论送入综合数据库中。

搏博的专栏 1701

实战设计模式之外观模式

与前一篇介绍的组合模式相同,外观模式也是一种结构型设计模式。通过引入一个外观类,将多个系统的接口整合成一个高层次的接口,使得客户端可以更容易地使用这些系统。这个模式的主要目的是:降低系统的耦合度,简化客户端与子系统之间的交互。汽车驾驶是现实生活中运用外观模式的一个典型例子:当我们驾驶一辆汽车时,实际上是在与多个复杂的子系统进行互动(比如:发动机系统、刹车系统、转向系统、空调系统等);然而,驾驶员并不需要了解这些系统的内部工作原理,只需要操作方向盘、油门踏板、刹车踏板和一些简单的按钮即可。

hope_wisdom的技术博客 2570

Spring AI Alibaba实战训练营-28 手把手教你用SAA+ Nacos 构建分布式 MCP 应用

本文介绍如何使用Spring AI Alibaba和Nacos构建分布式MCP应用,实现AI模型与工具服务的动态发现和调用。主要内容包括:1) 项目架构设计,包含MCP Server、Nacos注册中心和MCP Client三个核心组件;2) 环境准备要求,如Java 17+、Maven 3.6+、Nacos 3.1.0+等;3) 详细实施步骤:启动Nacos服务、注册MCP服务端、配置MCP网关聚合服务、设置MCP客户端发现机制。通过这种架构,开发者可以轻松扩展新工具服务,无需修改客户端代码,实现服务动态

program哲学 311

23种设计模式之一————外观模式详细介绍与讲解

当系统需要进行重构,需要对原有的代码进行优化和改进时,可以使用外观模式进行重构,使得代码更加易于理解和维护。同时,使用外观模式可以将系统功能进行重组,减少耦合,从而提高系统的灵活性和可扩展性。:当系统需要对外封闭,外界只能通过一个统一的接口来访问系统时,可以使用外观模式进行封装,这样可以有效提高系统的安全性。:系统内部的各个组件之间存在较高的耦合度,需要通过外观模式来降低其耦合度,从而提高系统的可扩展性和灵活性。,它提供了一个统一的接口,用来访问系统中的一群接口,从而简化客户端与系统之间的交互。

2201_75851346的博客 2106

【数据分析】R语言分段结构方程模型手把手教程(Piecewise Structural Equation Model)

分段结构方程模型(Piecewise Structural Equation Model, SEM)是一种用于分析变量之间因果关系的统计方法。它通过将复杂的因果关系分解为多个简单的线性模型来评估变量之间的直接和间接效应。与传统的结构方程模型(SEM)不同,分段结构方程模型不需要假设数据的多变量正态分布,因此在处理非正态数据时更为灵活。

专注生信领域 2649

基于ComfyUI+H3的本地化竖屏短剧自动化生成工作流

本文介绍了一种基于ComfyUI和MiniMax H3的本地化竖屏短剧自动化生成工作流。该方案通过纯机械读取分镜总纲表格,实现从文本到视频的全自动生成,支持多人同框稳定输出、人脸一致性保持、音视频同步生成等功能。工作流包含图像生成、人工审核、视频生成和音频处理四个核心环节,采用本地化部署方案避免云端服务的限制和成本问题。文章详细说明了环境部署步骤、必需的自定义节点安装以及显存优化配置,特别针对16GB显存设备提供了量化压缩、GPU独占调度等技术方案,确保系统流畅运行。

huanghm88的专栏 328

深入理解设计模式之外观模式

外观模式为子系统中的一组接口提供一个统一的高层接口,使得子系统更加容易被使用。它就像是一个 “大管家”,将系统内部复杂的操作和细节封装起来,对外只提供一个简单、统一的接口,让客户端无需了解系统内部的具体实现,就能轻松地与系统进行交互。

weixin_45969711的博客 764

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++设计模式(7)——外观模式

C++ 外观模式

伍粟的博客 2149

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android 蓝牙通讯demo

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

<八>读<<大话设计模式>>之外观模式

外观模式其实很好理解的,就是将表面的东西展示给人看,内部的东西你不知道的(因为已经封装好了),比如一个外部系统要和公司内部5个系统进行交互,而这5个系统之间也有交互,那么第一种就是外部系统和5个系统都进行交互;第二种就是做一个接口将外部系统需要的逻辑封装成一个方法,该方法中包含了关于5个系统的交互方式,这样外部系统就不用直接和5个系统交互了,直接调用接口完事。外观模式也叫门面模式,其实说白了就是把

jzhf2012的专栏 1554

精雕软件(JDpaint) 5.5 绿色版

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

Java设计模式 之 外观模式 简单易于理解

一、概念: 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 二、结构图如图所示: 三、代码实现 1、三个子系统类型 public class MoneySystem{ ...

阿火 240

设计模式——外观模式的学习与理解

什么是外观模式 外观模式( Facade),也叫“过程模式:外观模式为子系统中的一组接口提供个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,并且屏蔽了内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。 通俗的说:要实现一些连续的操作,外观模式可以使客户只需调用一个接口来而不是多个接口来达成目的。比如安装软件时的一键安装,安全软件的一键加速等。 案例 .在计算机主机( Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设

qq_44025396的博客 2833

23种设计模式一外观模式

外观模式通过提供统一接口简化复杂系统交互,其核心价值体现在简化、解耦和封装。文章以电商订单系统为例,展示了库存管理、支付处理、物流配送等多个子系统的实现,并通过OrderProcessingFacade外观类将这些子系统操作封装为统一的下单接口。该模式使客户端无需了解子系统细节,只需调用外观类提供的高层方法即可完成复杂操作,符合迪米特法则,有效降低了系统耦合度。UML类图清晰呈现了客户端、外观类与各子系统间的协作关系,体现了外观模式在复杂业务场景中的实用价值。

J_liaty的博客 1580

外观模式的理解和实践

外观模式是一种非常实用的设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口。外观模式降低了系统耦合度,提高了系统的可维护性,并优化了用户体验。在实际应用中,我们应该根据具体的需求和条件来选择是否使用外观模式,并注意其优缺点,合理设计系统的架构。

huaqianzkh的专栏 1123

从零开始学习Java设计模式 | 结构型模式篇:外观模式

在本讲,我们来学习一下结构型模式里面的第五个设计模式,即外观模式。 概述 在向大家讲解外观模式之前,我们先来看一个例子。 有些人可能炒过股票,但其实大部分人都是不太懂里面的一些操作的,这种没有足够了解证券知识的情况下炒股票是很容易亏钱的,刚开始炒股时我们肯定都会想,如果有个懂行的帮帮手就好了,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的收益归持有者所有,管理机构则是收取一定比例的托管管理费用。其实, 其实,以

李阿昀的博客 1171

【设计模式】外观模式

概述 外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。 定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这...

pointer_y的博客 196

对外观模式的理解

每个设备都有独立的开关密码,分别用数字1、2和3表示。即输入1时,空调关闭,输入2时,台灯关闭,输入3时,电视机关闭,当输入为4时,表示要关闭所有设备。请你使用外观模式编写程序来描述电源总开关的操作。接下来的 N 行,每行包含一个数字,表示对应设备的开关操作(1表示关闭空调,2表示关闭台灯,3表示关闭电视机,4表示关闭所有设备)。输出关闭所有设备后的状态,当输入的数字不在1-4范围内时,输出Invalid device code.第一行是一个整数 N(1 <= N <= 100),表示后面有 N 行输入。

南七行者的博客 904
上一篇: 简单理解常用设计模式(七)模板方法模式(抽取公共的)
下一篇: 简单理解常用设计模式(九)建造者模式(例如通过第三者生成人物)
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值