• 设计模式-观察者模式


    //主题
    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();
            } 
    

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

    转载于:https://blog.51cto.com/5591787/2115769

  • 相关阅读:
    少走弯路的10条忠告
    思考
    哈弗经典校训
    项目导出excel引发的一些问题
    hibernate 缓存设置
    dubbo简单用法
    sql 类型问题
    spring this.logger.isDebugEnabled()
    红黑树
    归并排序
  • 原文地址:https://www.cnblogs.com/twodog/p/12136920.html
Copyright © 2020-2023  润新知