觀察者模式在MVP中的應用

來源:互聯網
上載者:User

標籤:

  先簡單寫下觀察者模式。觀察者模式,又叫做發布-訂閱模式。觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,是他們能夠自動更新自己。

1  /// <summary>2     /// 發行者介面3     /// </summary>4     public interface IPublish5     {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 Status18         {19             get20             {21                 return this.status;22             }23             set24             {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發生了變化(點擊了按鈕等)的時候,觸發了事件,此時通知了其訂閱者,也就是觀察者。觀察者就會自動的觸發商務邏輯的處理。

觀察者模式在MVP中的應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.