资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

设计模式-观察者模式

//主题
interface Subject
    {
        void Notify();
        string msg { get; set; }
        UpdateHandler Update { get; set; }
    }
    delegate void UpdateHandler();
    class ChildSubject : Subject
    {
        public UpdateHandler Update { get; set; }
        public string msg { get; set; }        

        public void Notify()
        {
            Update();
        }
    }
//观察者       
abstract class Observer
    {
        public string name;
        public Subject subject;
        public Observer(string _name, Subject _subject)
        {
            name = _name;
            subject = _subject;
        }
    }
    class Site: Observer
    {
        public Site(string _name, Subject _subject) : base(_name, _subject)
        {
        }

        public void RefreshSite()
        {
            Console.WriteLine("{0},{1}需要同步更新", subject.msg,name);
        }
    }
    class App: Observer
    {
        public App(string _name, Subject _subject) : base(_name, _subject)
        {
        }
        //方法名称不一样,所以抽象没意义
        public void RefreshApp()
        {
            Console.WriteLine("{0},{1}需要同步更新", subject.msg, name);
        }
    }
        //前端
        static void Main(string[] args)
        {
            Subject subject = new ChildSubject();
            Site site = new Site("电脑网站", subject);
            App app = new App("手机APP", subject);
            subject.msg = "数据库被更新了";
            subject.Update += site.RefreshSite;
            subject.Update += app.RefreshApp;
            subject.Notify();
            Console.ReadLine();
        } 

总结:观察者模式适用于某个对象发生变化后会引起其他对象发生连锁反应的情况下,(两个类有依赖关系的情况下)。
设计模式-观察者模式

成都创新互联是一家集网站建设,富顺企业网站建设,富顺品牌网站建设,网站定制,富顺网站建设报价,网络营销,网络优化,富顺网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。


本文名称:设计模式-观察者模式
网址分享:http://cdkjz.cn/article/pcccsp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220