外观模式
/// <summary> /// 以学生选课系统为例子演示外观模式的使用 /// 学生选课模块包括功能有: /// 验证选课的人数是否已满 /// 通知用户课程选择成功与否 /// 客户端代码 /// </summary> class Student { private static RegistrationFacade facade = new RegistrationFacade(); static void Main(string[] args) { if (facade.RegisterCourse("设计模式", "Learning Hard")) { Console.WriteLine("选课成功"); } else { Console.WriteLine("选课失败"); } Console.Read(); } } // 外观类 public class RegistrationFacade { private RegisterCourse registerCourse; private NotifyStudent notifyStu; public RegistrationFacade() { registerCourse = new RegisterCourse(); notifyStu = new NotifyStudent(); } public bool RegisterCourse(string courseName, string studentName) { if (!registerCourse.CheckAvailable(courseName)) { return false; } return notifyStu.Notify(studentName); } } #region 子系统 // 相当于子系统A public class RegisterCourse { public bool CheckAvailable(string courseName) { Console.WriteLine("正在验证课程 {0}是否人数已满", courseName); return true; } } // 相当于子系统B public class NotifyStudent { public bool Notify(string studentName) { Console.WriteLine("正在向{0}发生通知", studentName); return true; } } #endregion
在以下情况下可以考虑使用外观模式:
- 为一个复杂的子系统提供一个简单的接口
- 提供子系统的独立性
- 在层次化结构中,可以使用外观模式定义系统中每一层的入口。其中三层架构就是这样的一个例子。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2016-04-28 对特殊字符编码js与c#中的处理方法
2015-04-28 基础控制器MVC ,全局判断