C#编程模式之外观模式

        创作背景:给位伙伴,五一小长假结束,我们继续对C#编程之路进行探索。本文将继续编程模式的研究,主要介绍外观模式。外观模式也称为门面模式,是一种结构型设计模式,它的目的是为子系统中的一组接口提供一个统一的高层接口,使各子系统更容易使用。它隐藏了子系统的复杂性,方便使用者访问。

        外观模式主要有两大部分组成,一个是外观,即高层可访问的接口类;一个是子系统,即实现具体功能的部分,通常包括多个类和接口。

        具体的实现代码如下:

        1、创建子系统。

    /// <summary>/// 子系统1/// </summary>public class SubsystemsOne{public string MethodOne(){return "子系统One的方法";}}
    /// <summary>/// 子系统2/// </summary>public class SubsystemsTwo{public string MethodTwo(){return "子系统Two的方法";}}
    /// <summary>/// 子系统3/// </summary>public class SubsystemsThree{public string MethodThree(){return "子系统Three的方法";}}

        2、创建外观。

    /// <summary>/// 外观/// </summary>public class Facade{private SubsystemsOne subsystemsOne;private SubsystemsTwo subsystemsTwo;private SubsystemsThree subsystemsThree;public Facade(){subsystemsOne = new SubsystemsOne();subsystemsTwo = new SubsystemsTwo();subsystemsThree = new SubsystemsThree();}public string MethodA(){return "\r\nMethodA---\r\n" + subsystemsOne.MethodOne() + "\r\n" + subsystemsTwo.MethodTwo();}public string MethodB(){return "\r\nMethodB---\r\n" + subsystemsThree.MethodThree() + "\r\n" + subsystemsTwo.MethodTwo();}}

        3、客户端调用。

        /// <summary>/// 外观模式/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_facade_Click(object sender, EventArgs e){Facade.Facade facade = new Facade.Facade();tbox_facade.Text = facade.MethodA();tbox_facade.Text += facade.MethodB();}

        4、实现效果图。

        以上就是关于外观模式的一些浅显理解,以及简单的示例代码。欢迎给位伙伴一起学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣每日一练(螺旋矩阵)

54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,…

centos 8.2 安装配置 vsftpd 虚拟用户访问

1安装vsftp yum install vsftpd -y 2安装db5 wget https://github.com/berkeleydb/libdb/releases/download/v5.3.28/db-5.3.28.tar.gz . tar zxvf db-5.3.28.tar.gz cd db-5.3.28/build_unix/ ../dist/configure -prefix/usr/local Make Make install3建用户等 useradd…

ESCI3罗德与施瓦茨ESCI3测试接收机

181/2461/8938产品概述&#xff1a; R&S ESCI接收机的特点包括: 出色表现 多达10个子范围的可编程扫描表自动或交互式预览和最终EMI测量的内部测试程序预扫描、数据缩减&#xff08;峰列表&#xff09;和最终测量的评估功能光谱分析仪快速ACP测量时域分析&#xff08;记…

Linux内核--设备驱动(六)媒体驱动框架整理(2)--视频

目录 一、引言 二、V4L2 ------>2.1、主要结构体 ------------>2.2.1、video_device ------------>2.2.2、v4l2_device ------------>2.2.3、v4l2_subdev ------>2.2、流程 ------>2.3、驱动实例 ------>2.4、V4L2的ioctl类型 ------------>…

Unity射击游戏开发教程:(11)制造敌人爆炸

增加爆炸效果 爆炸一切都变得更好!尤其是当你消灭敌人时。在这篇文章中,我将讨论如何在敌人被击中时为其添加爆炸动画。 在敌人的预制件中,您将需要创建一个新的动画。查看控制动画的动画器,默认情况下将从进入动画到敌人爆炸动画。这意味着,一旦敌人被实例化,敌人爆炸…

【Git】【MacOS】Github从创建与生成SSH公钥

创建账号 这一步不过多赘述&#xff0c;根据自己的邮箱新创建一个账号 配置SSH公钥 本人是macOS系统&#xff0c;首先从终端输入 cd ~/.ssh进入.ssh目录,然后通过 ls查看有没有一个叫做id_rsa.pub的文件 本人之前生成过SSH公钥,如果没有的话&#xff0c;通过 ssh-keygen -t…

vue 金额组件,输入提示单位:‘千’、‘万’、‘十万’...并用‘,’三个格式化

近期项目中遇到一个需求&#xff0c;金额输入框&#xff0c;输入过程中自动提示‘千’、‘万’、‘十万’、‘百万’......等单位提示&#xff0c;鼠标失去焦点后&#xff0c;并用‘,’三位隔开计数。 例如&#xff1a; 输入&#xff1a;12345.99 失去焦点&#xff1a;12,34…

Unit3

&#x1f4e3;Unit3 ✨1. capt&#xff0c;cept&#xff0c;ceive 抓&#xff0c;收 capture captain capable capability accept be accepted as acceptance acceptable unacceptable conceive conceive of sth concept conception except nothing expect exception …

科技云报道:从亚运到奥运,大型国际赛事共赴“云端”

科技云报道原创。 “广播电视转播技术拯救了奥运会”前奥委会主席萨马兰奇这句话广为流传。 奥运会、世界杯、亚运会这样的全球大型体育赛事不仅是体育竞技的盛宴&#xff0c;也是商业盛宴&#xff0c;还是技术与人文的融合秀。随着科技的进步&#xff0c;技术在体育赛事中扮…

vue中怎样清除computed的缓存

vue中computed计算属性自带缓存&#xff0c;会提高程序的渲染性能&#xff0c;但根据业务需求以及相应的优化&#xff0c;可能要清除computed的缓存&#xff0c;具体方法和场景分为了vue2和vue3 vue2&#xff1a; this.$delete(this.someObject, cachedProperty); 使用 this…

嵌入式交叉编译:x265

下载 multicoreware / x265_git / Downloads — Bitbucket 解压编译 BUILD_DIR${HOME}/build_libs CROSS_NAMEaarch64-mix210-linuxcd build/aarch64-linuxmake cleancmake \-G "Unix Makefiles" \-DCMAKE_C_COMPILER${CROSS_NAME}-gcc \-DCMAKE_CXX_COMPILER${CR…

实现主动威胁狩猎的7种方法及其特点分析

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、基于假设的威胁狩猎二、基于异常行为的威…

Spring Cloud Alibaba Sentinel 集成与限流实战(6)

Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbon 负载调用说明&…

Unreal Engine 常用组件介绍

Unreal Engine是一款功能强大的游戏引擎&#xff0c;提供了丰富的组件供开发者使用&#xff0c;以实现各种游戏功能和效果。以下是一些常见的Unreal Engine组件&#xff1a; 1. **PlayerController**&#xff1a;这是玩家控制的组件&#xff0c;用于处理玩家的输入和控制玩家角…

Windows 下启动 jar 后隐藏cmd 窗口

编写BAT脚本文件如下 方法一 echo off # 获取当前执行脚本的目录 set jarPath%~dp0 # 使用 javaw 启动一个jar start javaw -jar %jarPath%xxx.jar方法二 echo off # 获取当前执行脚本的目录 set jarPath%~dp0 # 使用vb脚本方式处理 cmd 窗口 %1 mshta vbscript:CreateObjec…

Vue09 五一前 组件通信

store组合式写法 count.ts组合式写法 import { reactive } from vue export const useLoveTalkStore defineStore(talk, () > {const talkList reactive(JSON.parse(localStorage.getItem(talkList) as string) || [])//getATalk函数相当于actionasync function getATal…

C#中的委托是什么?事件是不是一种委托?

在C#中&#xff0c;委托&#xff08;Delegate&#xff09;是一种类型安全的函数指针&#xff0c;它允许你定义可调用的方法类型&#xff0c;并将这些方法作为参数传递或赋值给变量。委托特别用于实现事件和回调方法。 委托的声明定义了一个可调用的方法必须具有的确切签名&…

学习记录:AUTOSAR R20-11的阅读记录(一)【Foundation(FO)】

一、OverView 1、AUTOSAR R20-11文档下载 官网下载&#xff1a;AUTOSAR 打包文档地址&#xff1a;AUTOSAR R20-11 2、文档组说明 AUTOSAR定义了三个文档组&#xff1a;ClassicPlatform(CP)、Adaptive Platform(AP)和Foundation(FO)&#xff0c;基于CP和AP的ECU基于共同标准F…

Docker Compose:简化多容器应用部署

序言 在当今的软件开发中&#xff0c;容器化技术的使用已经很普遍了。而 Docker 作为其中最流行的容器化平台之一&#xff0c;为开发者提供了方便、快捷、一致的开发和部署环境。但是&#xff0c;当我们的应用开始变得更加复杂&#xff0c;涉及到多个容器时&#xff0c;手动管…

幻兽帕鲁游戏主机多少钱?幻兽帕鲁游戏服务器一个月仅需32元

随着游戏产业的蓬勃发展&#xff0c;腾讯云紧跟潮流&#xff0c;推出了针对热门游戏《幻兽帕鲁Palworld》的专属游戏服务器。对于广大游戏爱好者来说&#xff0c;这无疑是一个激动人心的消息。那么&#xff0c;腾讯云幻兽帕鲁游戏主机到底多少钱呢&#xff1f;让我们一起来揭晓…