C#设计模式之---外观模式

外观模式(Facade Pattern)

外观模式(Facade Pattern)提供了一个简单且公用的接口去处理复杂的子系统,并且没有减少子系统的功能。降低子系统的复杂性,避免了客户与子系统直接链接,它也减少了子系统与子系统间的连接,每个子系统都有它的Facade模式,每个子系统采用Facade模式去访问其他子系统。这个外观类为子系统提供一个共同的对外接口,客户对象通过一个外观接口读写子系统中各接口的数据资源。外观模式的缺点是限制了客户的自由,减少了可变性。也是一种结构型模式。

using System;namespace ConsoleApplication
{//一般每个接口或类都写在单独的.cs文件中//本示例为了执行查看方便才写在一起  public class Facade{//被委托的对象SubSystemA a;SubSystemB b;SubSystemC c;SubSystemD d;public Facade(){a = new SubSystemA();b = new SubSystemB();c = new SubSystemC();d = new SubSystemD();}//提供给外部访问的方法public void methodA(){this.a.dosomethingA();}public void methodB(){this.b.dosomethingB();}public void methodC(){this.c.dosomethingC();}public void methodD(){this.d.dosomethingD();}}public class SubSystemA{public void dosomethingA(){Console.WriteLine("子系统方法A");}}public class SubSystemB{public void dosomethingB(){Console.WriteLine("子系统方法B");}}public class SubSystemC{public void dosomethingC(){Console.WriteLine("子系统方法C");}}public class SubSystemD{public void dosomethingD(){Console.WriteLine("子系统方法D");}}class Program{static void Main(string[] args){Facade facade = new Facade();facade.methodA();facade.methodB();Console.ReadKey();}}
}

 

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

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

相关文章

composer的劈坑

现在是php8盛行的天下,安装php8我就不多说了,宝塔、小出面板一大堆,一键安装。真心说方便。(好吧,不打广告了),以下是针对 linux 系统 1、安装composer 安装composer之前,需要要先在…

Android 13 设置自动进入wifi adb模式

Android 13 设置自动进入wifi adb模式 文章目录 Android 13 设置自动进入wifi adb模式一、前言:二、解决Android 13 wifi adb每次重启自动重置问题方法1、分析系统中每次重置wifi adb属性的代码2、在开机广播里面进行设置wifi adb 相关属性(1&#xff09…

wpf控制垂直滚动条到最上方

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 使用场景上代码 使用场景 wpf项目中有个datagrid列表,当数据出现垂直滚动条时拉倒最下方,现在当数据刷新时需要自动返回到数据最上方。 提示…

Unity VR 开发教程 OpenXR+XR Interaction Toolkit(八)手指触控 Poke Interaction

文章目录 📕教程说明📕XR Poke Interactor📕与 UI 进行触控交互⭐添加 Tracked Device Graphic Raycaster 和 XR UI Input Module 让 UI 可被交互 📕与物体进行交互⭐XR Simple Interactable⭐XR Poke Filter 往期回顾&#xff1a…

Mysql四种常见备份表方式,历史表

1、将表备份到物理机 mysqldump -h 域名 -P 端口 -u用户 -p密码 库名 表名 > /路径/表名.{$date}.bak 2、将表备份在库里面(create复制表结构、insert复制表内容) create table one_bak like one; 复制表结构 insert into one_bak select * from …

简单工厂模式详解

文章目录 前言一、简单工厂模式定义二、举个例子三、简单工厂模式的缺点总结 前言 本篇我们了解一下简单工厂模式,它是设计模式的雏形,是学习设计模式的开端,我会结合案例说明它的设计思路。 一、简单工厂模式定义 简单工厂模式并不是GoF23…

看一眼Mysql查询语句

目录 🛻 查询数据 🛻基本查询语句 🛻单表查询 🚕查询所有字段 🚕查询指定字段 🚕查询指定记录 🚕带in关键字的查询 🚕带between and的范围查询 🚕带like的字符匹…

【Eigen】Eigen内存对齐超详细讲解

Eigen是一个非常常用的矩阵运算库,由于使用了SSE指令集进行向量化加速,因此它的矩阵运算能力还是很厉害的,在SLAM等领域是一个不可或缺的的工具。然而,有时候在vector容器或者class类中使用Eigen时,可能会出现一些奇奇…

10个在线ai文案自动生成器,轻松写出高质量原创文案

在数字营销时代,撰写引人注目的标题和吸引人的营销文案至关重要。然而,写作优质文案需要耗费时间和精力。幸运的是,现在有许多在线AI文案自动生成器可以帮助我们快速创作出高质量的标题和营销文案。本文将介绍十款值得推荐的在线AI文案自动生…

微信小程序事件点击跳转页面的五种方法

第一种:标签 这是最常见的一种跳转方式,相当于html里的a标签 <navigator url"/pages/main/main"></navigator>第二种:wx.navigateTo({})方法 1.前端wxml <button bindtap"getCeshi" type"primary"> 测试按钮 </button>…

flink水位线传播及任务事件时间

背景 本文来讲解一下flink的水位线传播及对其对任务事件时间的影响 水位线 首先flink是通过从源头生成水位线记录的方式来实现水位线传播的&#xff0c;也就是说水位线是嵌入在正常的记录流中的特殊记录&#xff0c;携带者水位线的时间戳&#xff0c;以下我们就通过图片的方…

springCloud通过两种方式配置热更新

该热更新实际就是通过改动nacos官网里面的配置管理的妹纸内容实现 定义一个config包&#xff0c;在该包下面复制该代码 package cn.itcast.user.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.spring…

【C++】多线程编程二(std::thread详解)

目录 std::thread详解 &#xff08;1&#xff09;启动线程 ①无参无返回的函数作为入参 ②函数对象&#xff08;仿函数&#xff09;作为入参 &#xff08;2&#xff09;不等待线程detch() &#xff08;3&#xff09;等待线程完成join() &#xff08;4&#xff09;向线程…

力扣142. 环形链表 II

题目 给定一个链表的头节点head&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回null。 链接&#xff1a;142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 题解 方法一&#xff1a;设置两个指针&#xff0c;一个指针指向链表头结点&#…

云原生之深入解析Flink on k8s的运行模式与实战操作

一、概述 Flink 核心是一个流式的数据流执行引擎&#xff0c;并且能够基于同一个 Flink 运行时&#xff0c;提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布&#xff0c;数据通信及容错机制等功能。Flink 官网不同版本的文档flink on k8s 官方文…

辅助驾驶功能开发-功能对标篇(18)-NCA城市辅助系统-华为

1.横向对标参数 厂商华为车型极狐阿尔法S全新HI版上市时间2022/9/23方案13V5R3L+1DMS摄像头前视摄像头*4【双目+长焦+广角】侧视摄像头*4后视摄像头*1环视摄像头*4

993. 二叉树的堂兄弟节点

在二叉树中&#xff0c;根节点位于深度 0 处&#xff0c;每个深度为 k 的节点的子节点位于深度 k1 处。 如果二叉树的两个节点深度相同&#xff0c;但 父节点不同 &#xff0c;则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root &#xff0c;以及树中两个…

leetcode496. 下一个更大元素 I

https://leetcode.cn/problems/next-greater-element-i/ nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 给你两个 没有重复元素 的数组 nums1 和 nums2 &#xff0c;下标从 0 开始计数&#xff0c;其中nums1 是 nums2 的子集…

CVE-2023-1454注入分析复现

简介 JeecgBoot的代码生成器是一种可以帮助开发者快速构建企业级应用的工具&#xff0c;它可以通过一键生成前后端代码&#xff0c;无需写任何代码&#xff0c;让开发者更多关注业务逻辑。 影响版本 Jeecg-Boot<3.5.1 环境搭建 idea 后端源码&#xff1a; https://git…

vue3项目创建(vite3+ts+elementui-plus)

文章目录 1.创建工程 1.创建工程 目的&#xff1a;vue3vitets 安装依赖&#xff0c;安装vite的工具 Vite下一代的前端工具链为开发提供极速响应v4.3 npm install -g create-vite创建工程 create-vite font-userui --template vue-ts –template vue-ts 后面的是配置模板&#…