深度学习设计模式

文章目录

  • 观察者模式

观察者模式

 // 定义观察者接口
    interface IObserver
    {
        void Update(string message);
    }

    // 定义被观察者接口
    interface ISubject
    {
        void RegisterObserver(IObserver observer);
        void RemoveObserver(IObserver observer);
        void NotifyObservers(string message);
    }

    // 实现被观察者接口
    class AttendanceCounter : ISubject
    {
        private List<IObserver> observers;
        private bool isCounting = false;
        private bool userCancel = false;

        public AttendanceCounter()
        {
            observers = new List<IObserver>();
        }

        public void RegisterObserver(IObserver observer)
        {
            observers.Add(observer);
        }

        public void RemoveObserver(IObserver observer)
        {
            observers.Remove(observer);
        }

        public void NotifyObservers(string message)
        {
            foreach (IObserver observer in observers)
            {
                observer.Update(message);
            }
        }

        public void CountAttendance()
        {
            if (isCounting)
                return;

            isCounting = true;
            userCancel = false;
            NotifyObservers("统计开始");

            try
            {
                ClearOldLogs();

                //...........

                NotifyObservers("统计完毕");
            }
            catch (Exception ex)
            {
                NotifyObservers("统计出错:" + ex.Message);
            }

            isCounting = false;
        }

        public void CancelCounting()
        {
            userCancel = true;
        }

        private void ClearOldLogs()
        {
            // 清除旧的日志
            // ...
        }
    }

    // 实现观察者接口
    class LogWriter : IObserver
    {
        public void Update(string message)
        {
            // 写入日志
            Console.WriteLine(message);
        }
    }

    // 实现观察者接口
    class RichTextWriter : IObserver
    {
        public void Update(string message)
        {
            // 写入文本框
            Console.WriteLine(message);
        }
    }

你可能感兴趣的:(设计模式)