设计模式-观察者模式(observer pattern)

名称:观察者模式

说说:把你的电话留下,有事我会通知你,回去等我的消息吧!

动机:

适用性:

参与者:

结果:定义了对象之间一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知

类图:


说明: 分推模式和拉模式,此为推模式。

demo c#:

namespace observePattern
{
    class Program
    {
        static void Main(string[] args)
        {
            iObserve _observe1 = new observe();
            iObserve _observe2 = new observe();
            iObserve _observe3 = new observe();

            iSubject _subject = new subject();
            _subject.registerObserve(_observe1);
            _subject.registerObserve(_observe2);
            _subject.registerObserve(_observe3);
            _subject.notify();

            _subject.removeObserve(_observe2);
            _subject.notify();

            Console.Read();
        }
    }

    // main code
    interface iObserve {
        void update(iSubject s);
    }
    interface iSubject {
        void registerObserve(iObserve o);
        void removeObserve(iObserve o);
        void notify();
    }
    class observe : iObserve{
        public void update(iSubject s){
            Console.WriteLine("got it!");
        }
    }

    class subject : iSubject{
        List<iObserve> _observes = new List<iObserve>();

        public void registerObserve(iObserve o) {
            this._observes.Add(o);
        }
        public void removeObserve(iObserve o) {
            this._observes.Remove(o);
        }
        public void notify() {
            foreach (var o in this._observes){
                o.update(this);
            }
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值