• 设计模式之-观察者模式


    该文代码来自设计模式之惮一书。

    观察者模式定义:

      观察者模式也叫做发布订阅模式。

    观察者模式中的角色:

      1、被观察者

        被观察者职责为管理观察者并通知观察者。

      2、观察者

        对接受到的消息进行处理

    /// <summary>
        /// 被观察者
        /// </summary>
        public abstract class Subject
        {
            /// <summary>
            /// 观察者集合
            /// </summary>
            private List<IObservable> observableList = new List<IObservable>();
    
            /// <summary>
            /// 增加观察者
            /// </summary>
            /// <param name="observable">观察者</param>
            public void AddAbservable(IObservable observable)
            {
                this.observableList.Add(observable);
            }
    
            /// <summary>
            /// 删除观察者
            /// </summary>
            /// <param name="observable">观察者</param>
            public void DeleteAbservable(IObservable observable)
            {
                this.observableList.Remove(observable);
            }
           
            /// <summary>
            /// 通知所有的观察者
            /// </summary>
            /// <param name="context">通知内容</param>
            public virtual void NotifyMessage(string context)
            {
                Parallel.ForEach(this.observableList, p => p.Update());
            }
        }
    被观察者(Subject)
     /// <summary>
        ///     观察者
        /// </summary>
        public interface IObservable
        {
            /// <summary>
            ///     更新方法
            /// </summary>
            void Update();
        }
    观察者(IObservable)
     /// <summary>
        /// 具体的被观察者
        /// </summary>
        public class ConcreteSubject : Subject
        {
            /// <summary>
            /// 具体业务
            /// </summary>
            public void DoSomething()
            {
                base.NotifyMessage("");
            }
        }
    具体的被观察者(ConcreteSubject)
    /// <summary>
        /// 具体观察者
        /// </summary>
        public class ConcreteObservable : IObservable
        {
            /// <summary>
            /// 更新(接收处理消息)
            /// </summary>
            public void Update()
            {
                //todo
            }
        }
    具体观察者(ConcreteObservable )
    [TestClass]
        public class UnitTest1
        {
            [TestMethod]
            public void TestMethod1()
            {
                var subject = new ConcreteSubject();
    
                var obs = new ConcreteObservable();
    
                subject.AddAbservable(obs);
    
                subject.DoSomething();
            }
        }
    场景类(UnitTest1)

    详细细节查看设计模式之惮一书-观察者模式.

  • 相关阅读:
    sklearn库学习笔记1——preprocessing库
    juypter notetbook
    信用卡欺诈
    matplotlib1
    python一行输入多个数
    pandas数据预处理
    pandas基础用法
    numpy简单用法2
    numpy 简单用法
    简单循环
  • 原文地址:https://www.cnblogs.com/-ShiL/p/Star_200920140625.html
Copyright © 2020-2023  润新知