一种结构性设计模式。
特点是将复杂的子系统调用逻辑封装到一个外观类,从而使客户端更容易与系统交互。
优点:
- 简化了接口的调用;
- 降低了客户端与子系统的耦合度;
- 封装了子系统的逻辑。
缺点:
- 引入了额外的类,可能会增加不必要的复杂性;
- 不适合需要频繁修改的系统。
- 外观类承担的职责过多
适合的场景:
- 家庭影院系统;
- 网络服务端的连接;
- 数据库的访问。
cs//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(); } }
cs//引擎 public class Engine { /// <summary> /// 启动游戏引擎 /// </summary> public void StartEngine() { Console.WriteLine("Game engine started."); } /// <summary> /// 停止游戏引擎 /// </summary> public void StopEngine() { Console.WriteLine("Game engine stopped."); } }
cs//车门 public class Door { /// <summary> /// 开启车门 /// </summary> public void Open() { Console.WriteLine("Door is opening"); } /// <summary> /// 关闭车门 /// </summary> public void Close() { Console.WriteLine("Door is closing"); } }
cs//车灯 public class Light { /// <summary> /// 开灯 /// </summary> public void TurnOnLight() { Console.WriteLine("open car light"); } /// <summary> /// 关灯 /// </summary> public void TurnOffLight() { Console.WriteLine("close car light"); } }
cs//客户端 public class Client { //客户端调用 public static void Main(string[] args) { //创建车辆实例 Car car = new Car(); //启动车辆 car.Start(); //停止车辆 car.Stop(); } }
【设计模式&C#】外观模式(用于解决客户端对系统的许多类进行频繁沟通)
大飞pkz2025-07-20 9:59
相关推荐
半亩码田14 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路AI人工智能+电脑小能手18 小时前
大白话说Java设计模式-08-建造者模式(业务实战篇)唐青枫21 小时前
别再手写 args[0]:C#.NET CommandLineParser 命令行工具实战详解AustinXu21 小时前
从 Claude Code 到 Claude Tag,Harness Engineering 走到了组织这一层剧中有戏21 小时前
单例模式从入门到精通:一个数据库连接池的完整剖析胡萝卜术21 小时前
编译期与运行期的双重防线:从 TypeScript 类型之争到 LLM 输出的自动化择优货拉拉技术21 小时前
重塑 Agent 度量衡:基于 LLM-as-a-Judge 的离线评估体系与实践LccKyI1 天前
C#学习day06(方法/函数及其关键字,附思维导图)KhalilRuan1 天前
设计模式小记.Peter1 天前
.NET/WPF 程序在部分 Windows 电脑无法保存用户环境变量:使用 DPAPI 实现安全兼容