美文网首页.NET
观察者模式-广播通知

观察者模式-广播通知

作者: Carson_jz | 来源:发表于2020-02-11 23:32 被阅读0次

概要:主要解决在不入侵一个对象的情况下使得对象状态改变后给其他对象通知的问题,把对象状态修改后所需要做的其他事情从当前对象解耦出去,通过一个观察者来管理。设计模式Github源码

观察者.png

观察者模式 vs 发布订阅模式

以数据状态变更为例

Notice N:被观察者,就是被通知后需要执行的逻辑

StatusChangedSubscribe:观察者

先定义两个被观察者

    public class Notice1
    {
        public int Status => 1;

        public void OnStatusChanged(int newStatus)
        {
            if (newStatus == Status)
            {
                Console.WriteLine("status 1");
            }
        }
    }

    public class Notice2
    {
        public int Status => 2;

        public void OnStatusChanged(int newStatus)
        {
            if (newStatus == Status)
            {
                Console.WriteLine("status 2");
            }
        }
    }

观察者

public class StatusChangedSubscribe
    {
        private int _currentStatus;
        public int CurrentStatus
        {
            get { return _currentStatus; }
            set
            {
                //检查值是否发生变更
                if (value != CurrentStatus)
                {
                    _currentStatus = value;

                    //非空就全部执行
                    //OnStatusChanged?.Invoke(value);
                }
            }
        }

        public Action<int> OnStatusChanged { get; set; }
    }
        static void Main(string[] args)
        {
            while (true)
            {
                
                StatusChangedSubscribe statusChangedSubscribe = new StatusChangedSubscribe();
                Notice1 notice1 = new Notice1();
                Notice2 notice2 = new Notice2();

                statusChangedSubscribe.OnStatusChanged += notice1.OnStatusChanged;
                statusChangedSubscribe.OnStatusChanged += notice2.OnStatusChanged;
                string inputKey = Console.ReadLine();
                statusChangedSubscribe.CurrentStatus = int.Parse(inputKey);
            }
        }

相关文章

  • iOS-通知中的知识点

    # 通知中的知识点 - **1.观察者模式:** - 观察者模式-发生时间后,以广播的形式,通知所有监听者 ---...

  • 观察者模式-广播通知

    概要:主要解决在不入侵一个对象的情况下使得对象状态改变后给其他对象通知的问题,把对象状态修改后所需要做的其他事情从...

  • 观察者模式

    一处改变多处通知,被观察者发生改变会通知到其他观察者。例如:Android系统的广播,同时使用到了单例和观察者模式...

  • 观察者模式(Observer)

    一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。就可以使用观察者模式,...

  • 行为型模式-观察者模式

    消息通知,广播机制,通过注册接收者,观察者发送消息给多个接收者 观察者模式: 当对象间存在一对多关时,则使用观察者...

  • 发布订阅模式-观察者模式的升级版

    我们提及过观察者模式解耦了对象广播通知的方式,但这种方式并没达到完全解耦,毕竟观察者和通知者是在一起的,如果要增加...

  • Python观察者模式

    观察者模式,被观察物自身属性通知观察者。

  • 关于BroadCastReceiver的总结

    广播实现的原理 Android中的广播使用了设计模式中的观察者模式:基于消息的发布 / 订阅事件模型 1.创建广播...

  • 前端设计模式-观察者模式(上)

    观察者模式 发布&订阅 一对多 优点:更加解耦,支持广播通信 缺点:大量观察者,广播有性能问题// 主题对象cla...

  • Observer模式(观察者模式)

    观察者模式(Observer Pattern):当观察对象的状态变化时,会自动通知给观察者。观察者模式属于行为型模...

网友评论

    本文标题:观察者模式-广播通知

    本文链接:https://www.haomeiwen.com/subject/tvuoxhtx.html