public static void Execute()
        {
            // 使用Event事件委派
            Console.WriteLine("Event Demo");
            var tempatureMonitorEvent = new TempatureMonitorUsingEvent();
            var desktopApp            = new DesktopApp();
            var mobileApp             = new MobileApp();

            tempatureMonitorEvent.OnTempatureChanged += desktopApp.OnTempatureChangedEvent;
            tempatureMonitorEvent.OnTempatureChanged += mobileApp.OnTempatureChangedEvent;
            // 額外自訂事件委派方法, 由於是宣告成事件委派, 輸入到+=時可以直接用TAB產生基本的程式碼
            tempatureMonitorEvent.OnTempatureChanged += TempatureMonitorEvent_OnTempatureChanged;

            Console.WriteLine("溫度變化了,現在是30.5度");
            tempatureMonitorEvent.Tempature = 30.5;

            Console.WriteLine("溫度沒變化,現在依然是30.5度");
            tempatureMonitorEvent.Tempature = 30.5;

            Console.WriteLine("溫度變化了,現在是28.6度");
            tempatureMonitorEvent.Tempature = 28.6;

            Console.WriteLine("mobileApp不再想觀察了");
            tempatureMonitorEvent.OnTempatureChanged -= mobileApp.OnTempatureChangedEvent;

            Console.WriteLine("溫度變化了,現在是27.6度");
            tempatureMonitorEvent.Tempature = 27.6;
            Console.WriteLine();
        }
Exemple #2
0
        public static void Execute()
        {
            // 使用一般Observer pattern
            Console.WriteLine("Observer Pattern Demo");
            var tempatureMonitor = new TempatureMonitorSubject();

            var desktopApp = new DesktopApp();
            var mobileApp  = new MobileApp();

            tempatureMonitor.RegisterObserver(desktopApp);
            tempatureMonitor.RegisterObserver(mobileApp);

            Console.WriteLine("溫度變化了,現在是30.5度");
            tempatureMonitor.Tempature = 30.5;

            Console.WriteLine("溫度沒變化,現在依然是30.5度");
            tempatureMonitor.Tempature = 30.5;

            Console.WriteLine("溫度變化了,現在是28.6度");
            tempatureMonitor.Tempature = 28.6;

            Console.WriteLine("mobileApp不再想觀察了");
            tempatureMonitor.UnregisterObserver(mobileApp);

            Console.WriteLine("溫度變化了,現在是27.6度");
            tempatureMonitor.Tempature = 27.6;
            Console.WriteLine();
        }