天天看點

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

介紹

定義對象間的一種一對多的依賴關系,以便當一個對象的狀态發生改變時,所有依賴于它的對象都得到通知并自動重新整理。

示例

有一個Message實體類,某些對象對它的操作有Insert()方法,當發生某些改變的時候,通知所有這些對象并執行Insert()方法。

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

MessageModel

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Collections.Generic;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Text;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

namespace Pattern.Observer

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

{

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /**//// <summary>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /// Message實體類

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /// </summary>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    public class MessageModel

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /**//// <summary>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// 構造函數

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// </summary>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// <param name="msg">Message内容</param>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// <param name="pt">Message釋出時間</param>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public MessageModel(string msg, DateTime pt)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            this._message = msg;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            this._publishTime = pt;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        private string _message;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// Message内容

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public string Message

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            get 

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

{ return _message; }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            set 

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

{ _message = value; }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        private DateTime _publishTime;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// Message釋出時間

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public DateTime PublishTime

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

{ return _publishTime; }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

{ _publishTime = value; }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

}

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

IMessage

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /// 操作Message的接口(Observer)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    public interface IMessage

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// 插入Message

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// <param name="mm">Message實體對象</param>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// <returns></returns>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        string Insert(MessageModel mm);

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

SqlMessage

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /// Sql方式操作Message(ConcreteObserver)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    public class SqlMessage : IMessage

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public string Insert(MessageModel mm)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            return "sql方式:" + mm.Message + " " + mm.PublishTime.ToString();

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        } 

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

XmlMessage

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /// Xml方式操作Message(ConcreteObserver)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    public class XmlMessage : IMessage

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            return "xml方式:" + mm.Message + " " + mm.PublishTime.ToString();

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

AbstractMessageSubject

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /// 抽象Message主題(Subject)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    public abstract class AbstractMessageSubject

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        private MessageModel _messageModel;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        private List<IMessage> list = new List<IMessage>();

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public AbstractMessageSubject(MessageModel mm)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            this._messageModel = mm;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// 添加一個實作IMessage接口的對象

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// <param name="m">實作IMessage接口的對象</param>

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public void Attach(IMessage m)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            list.Add(m);

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// 移除一個實作IMessage接口的對象

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public void Detach(IMessage m)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            list.Remove(m);

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        /// 通知所有觀察者

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public string Notify()

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            string s = "";

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            foreach (IMessage i in list)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

                s += i.Insert(_messageModel);

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

                s += "<br />";

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            return s;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

{ return _messageModel.PublishTime; }

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            set

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

                _messageModel.PublishTime = value;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

                Notify();

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

MessageSubject

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    /// Message主題(ConcreteSubject)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    public class MessageSubject : AbstractMessageSubject

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        public MessageSubject(MessageModel mm)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

            : base(mm)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

Test

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Data;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Configuration;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Collections;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Web;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Web.Security;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Web.UI;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Web.UI.WebControls;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Web.UI.WebControls.WebParts;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using System.Web.UI.HtmlControls;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

using Pattern.Observer;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

public partial class Observer : System.Web.UI.Page

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

    protected void Page_Load(object sender, EventArgs e)

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        MessageSubject m = new MessageSubject(new MessageModel("插入Message", DateTime.Now));

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        SqlMessage sqlMessage = new SqlMessage();

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        XmlMessage xmlMessage = new XmlMessage();

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        m.Attach(sqlMessage);

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        m.Attach(xmlMessage);

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        // System.Threading.Thread.Sleep(1000);

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        // 修改了PublishTime就會通知所有觀察者

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        // m.PublishTime = DateTime.Now;

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

        Response.Write(m.Notify());

樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)
樂在其中設計模式(C#) - 觀察者模式(Observer Pattern)

運作結果

sql方式:插入Message 2007-5-26 9:38:18

xml方式:插入Message 2007-5-26 9:38:18

參考

<a href="http://www.dofactory.com/Patterns/PatternObserver.aspx" target="_blank">http://www.dofactory.com/Patterns/PatternObserver.aspx</a>

OK

<a href="http://files.cnblogs.com/webabcd/Pattern.rar">[源碼下載下傳]</a>