【设计模式C#】外观模式(用于解决客户端对系统的许多类进行频繁沟通)
一种结构性设计模式。特点是将复杂的子系统调用逻辑封装到一个外观类,从而使客户端更容易与系统交互。
优点:
- 简化了接口的调用;
- 降低了客户端与子系统的耦合度;
- 封装了子系统的逻辑。
缺点:
- 引入了额外的类,可能会增加不必要的复杂性;
- 不适合需要频繁修改的系统。
- 外观类承担的职责过多
适合的场景:
- 家庭影院系统;
- 网络服务端的连接;
- 数据库的访问。
//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();} }