• 观察者模式在MVP中的应用


      先简单写下观察者模式。观察者模式,又叫做发布-订阅模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,是他们能够自动更新自己。

    1  /// <summary>
    2     /// 发布者接口
    3     /// </summary>
    4     public interface IPublish
    5     {
    6         void Notify();
    7         string Status { set; get; }
    8     }
    发布者接口
     1 /// <summary>
     2     /// 具体的发布者
     3     /// </summary>
     4     public class PublishA:IPublish
     5     {
     6         private string status;
     7         //发布的事件,供观察者订阅
     8         public NotifyEventHandle OnNotify;
     9         public void Notify()
    10         {
    11             if (OnNotify != null)
    12             {
    13                 OnNotify(new NotifyEventArgs { Status = this.Status });
    14             }
    15         }
    16 
    17         public string Status
    18         {
    19             get
    20             {
    21                 return this.status;
    22             }
    23             set
    24             {
    25                 this.status = value;
    26             }
    27         }
    28     }
    具体发布者
     public delegate void NotifyEventHandle(NotifyEventArgs eventArgs);
    
        public class NotifyEventArgs : EventArgs
        {
            public string Status { set; get; }
        }
    
    /// <summary>
        /// 具体的订阅者
        /// </summary>
        public class SubscriberA
        {
            public void Update(NotifyEventArgs eventArgs)
            {
                Console.WriteLine("SubscriberA被发布者通知了!发布者的状态变为:"+eventArgs.Status);
            }
        }
    
        /// <summary>
        /// 具体的订阅者
        /// </summary>
        public class SubscriberB
        {
            public void Update(NotifyEventArgs eventArgs)
            {
                Console.WriteLine("SubscriberB被发布者通知了!发布者的状态变为:" + eventArgs.Status);
            }
        }
    具体订阅者
     1 private void button1_Click(object sender, EventArgs e)
     2         {
     3             PublishA publish = new PublishA();
     4             SubscriberA subscriber1 = new SubscriberA();
     5             SubscriberB subscriber2 = new SubscriberB();
     6             //订阅者1订阅了发布者的事件。
     7             publish.OnNotify += new NotifyEventHandle(subscriber1.Update);
     8             publish.OnNotify += new NotifyEventHandle(subscriber2.Update);
     9 
    10             publish.Status = "AAA";
    11             publish.Notify();
    12         }
    客户端调用

    在MVP架构中。UI界面(V)会发布一系列的事件(此时UI就是具体的发布者),提供给presenter(P)订阅(此时Presenter就是具体的观察者)。

    在MVP中处理业务逻辑都是有Presenter去做。但是具体什么时候去处理呢,那就是当UI发生了变化(点击了按钮等)的时候,触发了事件,此时通知了其订阅者,也就是观察者。观察者就会自动的触发业务逻辑的处理。

  • 相关阅读:
    MyCat 概念与配置
    使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)
    数据库分库分表中间件MyCat的安装和mycat配置详解
    搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)
    数据库分库分表的类型和特点
    数据库为什么要分库分表
    正确安装MySQL5.7 解压缩版(手动配置)方法
    SQL 查询相同记录下日期最大的一条数据
    HashMap在Jdk1.7和1.8中的实现
    Spring Bean的生命周期
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/4701418.html
Copyright © 2020-2023  润新知