⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 observer.cs

📁 C#设计模式源码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace DesignDll
{

    /************************************************************************
     * 观擦者模式;(Observer) 定义了一种一对多的依赖关系,让多个观察者者对象同时
     * 监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,
     * 使它们能够自动更新自已
     * **********************************************************************/

    /// <summary>
    /// 抽象主题通知者
    /// </summary>
    abstract class Subject
    {
        private IList<Observer> observers = new List<Observer>();

        /// <summary>
        /// 增加观察者
        /// </summary>
        public void AddObserver(Observer observer)
        {
            observers.Add(observer);
        }

        /// <summary>
        /// 删除观察者
        /// </summary>
        /// <param name="observer"></param>
        public void DelObserver(Observer observer)
        {
            observers.Remove(observer);
        }


        /// <summary>
        /// 通知观察者
        /// </summary>
        public void Noitfy()
        {
            foreach (Observer o in observers)
            {
                o.Update();
            }
        }


    }


    /// <summary>
    /// 抽象观察者类
    /// </summary>
    abstract class Observer
    {
        public abstract void Update();
    }

    /// <summary>
    /// 具体通知者类
    /// </summary>
    class ConcreteSubject : Subject
    {
        private string subjectState;

        public string SubjectState
        {
            get { return subjectState; }
            set { subjectState = value; }
        }
    }


    /// <summary>
    /// 具体通知者类
    /// </summary>
    class ConcreteObserver : Observer
    {
        //姓名
        private string name;
        //观察状态
        private string ObserverState;
        //通知对象
        private ConcreteSubject subject;

        public ConcreteObserver(string sName, ConcreteSubject ConSubject)
        {
            this.name = sName;
            this.subject = ConSubject;
        }

        // 更新参数
        public override void Update()
        {
            //throw new Exception("The method or operation is not implemented.");
        }

    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -