当前位置: 首页 > 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.lryc.cn/news/593211.html

相关文章:

  • Django母婴商城项目实践(七)- 首页数据业务视图
  • 洛谷 P2947:[USACO09MAR] Look Up S ← 数组模拟+单调栈
  • 使用 Gunicorn 部署 Django 项目
  • 5 基于STM32单片机的绝缘检测系统设计(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)
  • 6 STM32单片机的智能家居安防系统设计(STM32代码+手机APP设计+PCB设计+Proteus仿真)
  • 对话访谈 | 盘古信息×锐明科技:中国企业高质量出海“走进去”和“走上去”
  • 家庭KTV v1.1.9 | 曲库丰富,无限制免费K歌
  • 驾驭 Spring Boot 事件机制:8 个内置事件 + 自定义扩展实战
  • 《一行注解解决重复提交:Spring Boot 接口幂等实战》
  • 深入理解设计模式:策略模式的艺术与实践
  • 在非Spring Boot的Spring项目中使用Lock4j
  • 用graphviz画一个关系图
  • 云服务器磁盘IO性能优化的测试与配置方法
  • 2025年7月19日,二维矩阵
  • 智能制造——解读39页汽车行业数字化工厂解决方案【附全文阅读】
  • 异世界历险之数据结构世界(二叉树-leetcode)
  • 国产电科金仓数据库:融合进化,智领未来
  • 【Unity3D实例-功能-移动】角色移动-通过WSAD(Rigidbody方式)
  • 架构探索笔记【1】
  • JavaScript空值安全深度指南
  • windows内核研究(驱动开发之内核编程)
  • Java无服务架构新范式:Spring Native与AWS Lambda冷启动深度优化
  • 【小沐学GIS】基于Rust绘制三维数字地球Earth(Rust、OpenGL、GIS)
  • C++STL系列之概述
  • OpenCV 官翻5 - 机器学习
  • 【web安全】万能密码
  • 物联网系统中的可视化大屏定义
  • UGUI 性能优化系列:第三篇——渲染与像素填充率优化
  • 小明记账簿焕新记:从单色到多彩的主题进化之路
  • 【Android】ListView与RecyclerView的基础使用