当前位置: 首页 > news >正文

【设计模式C#】外观模式(用于解决客户端对系统的许多类进行频繁沟通)

一种结构性设计模式。

特点是将复杂的子系统调用逻辑封装到一个外观类,从而使客户端更容易与系统交互。

优点:

  1. 简化了接口的调用;
  2. 降低了客户端与子系统的耦合度;
  3. 封装了子系统的逻辑。

缺点:

  1. 引入了额外的类,可能会增加不必要的复杂性;
  2. 不适合需要频繁修改的系统。
  3. 外观类承担的职责过多

适合的场景:

  1. 家庭影院系统;
  2. 网络服务端的连接;
  3. 数据库的访问。
//Car类,即外观类
using System;public class Car
{   //车辆的各个部件private Engine engine = new Engine();//引擎private Door door = new Door();//车门private Light light = new Light();//车灯//启动车辆public void Start(){   //启动车门door.Open();//启动引擎engine.StartEngine();//启动车灯light.TurnOnLight();}//停止车辆public void Stop(){//关闭车灯light.TurnOffLight();//关闭引擎engine.StopEngine();//关闭车门door.Close();}
}
//引擎
public class Engine
{/// <summary>/// 启动游戏引擎/// </summary>public void StartEngine(){Console.WriteLine("Game engine started.");}/// <summary>/// 停止游戏引擎/// </summary>public void StopEngine(){Console.WriteLine("Game engine stopped.");}
}
//车门
public class Door
{/// <summary>/// 开启车门/// </summary>public void Open(){Console.WriteLine("Door is opening");}/// <summary>/// 关闭车门/// </summary>public void Close(){Console.WriteLine("Door is closing");}
}
//车灯
public class Light
{/// <summary>/// 开灯/// </summary>public void TurnOnLight(){Console.WriteLine("open car light");}/// <summary>/// 关灯/// </summary>public void TurnOffLight(){Console.WriteLine("close car light");}
}
//客户端
public class Client
{   //客户端调用public static void Main(string[] args){   //创建车辆实例Car car = new Car();//启动车辆car.Start();//停止车辆car.Stop();}
}
http://www.dtcms.com/a/287203.html

相关文章:

  • 【Unity编辑器开发GUI.Window】
  • 企业运维实战:Jenkins 依赖 JDK21 与应用需 JDK1.8 共存方案(含流水线配置)
  • 软件工程:可行性分析的任务及报告
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 基于wordcloud库实现词云图
  • 使用nvm安装node、npm、pnpm以及编译项目教程
  • 告别项目混乱:基于 pnpm + Turborepo 的现代化 Monorepo 工程化最佳实践
  • 【音视频协议篇】RTSP系列
  • gitlab+jenkins
  • 综合实验--eNSP实验
  • k8s 基本架构
  • Flowable31动态表单-----------------------终章
  • AI编程工具对比:Cursor、GitHub Copilot与Claude Code
  • bws-rs:Rust 编写的 S3 协议网关框架,支持灵活后端接入
  • 【Linux】AKHQ实现kafka可视化
  • 电力载波通信技术全景解析:从历史演进到智能电网创新应用
  • 【Linux服务器】-MySQL数据库参数调优
  • 打造高效订单处理!ZKmall开源商城的统一履约中心架构解析
  • 本地部署开源的 AI 驱动的搜索引擎 Perplexica 并实现外部访问
  • 【黑马SpringCloud微服务开发与实战】(三)微服务01
  • 快速上手AI整合包!GPT-SoVITS-v2打包教程,解锁AIStarter应用市场潜力
  • freertos任务调度关键函数理解
  • 笔试强训——第一周
  • 标准文件和系统文件I/O
  • 鸿蒙与web混合开发双向通信
  • 云服务器磁盘IO性能优化的测试与配置方法
  • docker|Linux|以centos基础镜像为基础制作nmap专用镜像(镜像瘦身计划)
  • SQL基础操作指南:约束、表设计与复杂查询
  • 【RK3576】【Android14】USB开发调试
  • install_arm_docker.sh
  • 【Qt开发】Qt的背景介绍(三)-> 认识Qt Creator