文章出處
文章列表
/// <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
在以下情況下可以考慮使用外觀模式:
- 為一個復雜的子系統提供一個簡單的接口
- 提供子系統的獨立性
- 在層次化結構中,可以使用外觀模式定義系統中每一層的入口。其中三層架構就是這樣的一個例子。
文章列表
全站熱搜
留言列表