zoukankan      html  css  js  c++  java
  • 【原创】设计模式面对面之观察者模式

    观察者模式

    观察者模式主要涉及两种对象:观察目标对象,观察对象。

    类图:

     

    常用的实现方式:

    目标对象

     //观察目标
        public class Target {
    
            private readonly string _content;
            private readonly List<Observer> _observers;
    
            public Target()
            {
                _observers=new List<Observer>();
                _content = "今天不用上班了!!";
                Register();
            }
    
            public void Notify(){
                _observers.ForEach(x =>
                {
                    x.Receive(_content);
                });
            }
    
            private void Register(){
                var observer1 = new Observer("observer1");
                var observer2 = new Observer("observer2");
                var observer3 = new Observer("observer3");
                _observers.Add(observer1);
                _observers.Add(observer2);
                _observers.Add(observer3);
            }
    
        }//end Target
    View Code

    观察对象

     //观察对象
        public class Observer
        {
    
            private readonly string _name;
            public Observer(string name)
            {
                _name = name;
            }
    
            public void Receive(string content){
                Console.WriteLine($"{_name}收到:{content}");
            }
    
        }//end Observer
    View Code

     调用:

     class Program
        {
            static void Main(string[] args)
            {
               
    
                //观察者
                var target = new Target();
    
                target.Notify();
                Console.ReadLine();
    
    
            }
        }
    View Code

     使用场景:

    观察者模式事先已经知道要通知那些对象了这是和订阅模式的主要区别,两者如何选择根据场景判断。

  • 相关阅读:
    星空雅梦
    星空雅梦
    Navicat permium快捷键
    Mysql建表+创建索引
    mysql 常见ALTER TABLE操作
    mysql常用的索引种类
    xShell终端中文乱码-解决方法
    git删除本地分支和远程分支
    git版本回退
    log4j2配置文件log4j2.xml详解
  • 原文地址:https://www.cnblogs.com/dujq/p/7813885.html
Copyright © 2011-2022 走看看