观察者模式

Posted chester.chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式相关的知识,希望对你有一定的参考价值。

观察者模式:一种一对多的依赖关系,多个观察者对象监听一个主题对象,主题对象变化,则通知观察者对象,让他们自动更新自己。

UML图:

技术分享图片

示例代码:

    public class Observer
    {
        public virtual void Update(string name)
        {

        }
    }
    public class ConcreteObeserver : Observer
    {
        public override void Update(string name)
        {
            Console.WriteLine(name+"发生改变触发观察者方法");
        }
    }
    public class Subject
    {
        public List<Observer> listObserver = new List<Observer>();
        private string name;
        public string Name
        {
            get { return name; }
            set
            {
                name = value;
                Modify(name);
            }
        }

        public void Add(Observer observer)
        {
            listObserver.Add(observer);
        }

        public void Modify(string name)
        {
            listObserver.ForEach(e=> {
                e.Update(name);
            });
        }
    }
    public class ConcreteSubject : Subject
    {
    }
    class Program
    {
        static void Main(string[] args)
        {
            Observer obeserver = new ConcreteObeserver();
            Subject subject = new ConcreteSubject();
            subject.Add(obeserver);
            subject.Name = "cys";
        }
    }

 

以上是关于观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

未调用 LiveData 观察者

Java设计模式补充:回调模式事件监听器模式观察者模式(转)

如何为片段设置观察者

永远观察实时数据的片段

设计模式观察者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

观察者模式