zoukankan      html  css  js  c++  java
  • 观察站模式

    依赖倒置原则

    依赖抽象,尽可能扩展而不是修改和破坏

     public abstract class Subject
        {
            IList<IAccountObserver> observerList = new List<IAccountObserver>();
    
            public void AddObserver( IAccountObserver observer )
            {
                observerList.Add( observer );
            }
            public void RemoveObserver( IAccountObserver observer )
            {
                observerList.Remove( observer );
            }
    
            public void Notify( UserAccountArgs args )
            {
                foreach( IAccountObserver observer in observerList )
                {
                    observer.Update( args );
                }
            }
        }    
     public class UserAccountArgs
        {
            public string PhoneNumber;
            public string Email;
        }
      public class BankAccount : Subject
        {
            public void WithDraw( UserAccountArgs args )
            {
                Notify( args );
            }
        }
      public interface IAccountObserver
        {
            void Update(UserAccountArgs args);
        }
     public class Mobile:IAccountObserver
        {
            public void Update( UserAccountArgs args )
            {
            }
        }
    public class Emailer:IAccountObserver
        {
            public void Update( UserAccountArgs args )
            {
            }
        }

    调用

     static void Main( string[] args )
            {
                Subject subject = new BankAccount();
                
                UserAccountArgs arg = new UserAccountArgs();
                arg.Email = "";
                arg.PhoneNumber = "";
    
                IAccountObserver observer1 = new Emailer();
                IAccountObserver observer2 = new Mobile();
    
                subject.AddObserver( observer1 );
                subject.AddObserver( observer2 );
    
                subject.Notify( arg );
            }

     为了原则而模式不是为了模式而代码

  • 相关阅读:
    python-获取网页源码及保存网页图片到本地实例
    python-随机向文件中写入100个名字实例
    python-计算文件中每个字出现的次数
    python-序列类型
    python-字符串
    python示例1(基本知识巩固)
    python-示例(基本知识巩固)
    [leetcode] Binary Tree Upside Down
    Trie 树
    第K大问题
  • 原文地址:https://www.cnblogs.com/wangchuang/p/3021990.html
Copyright © 2011-2022 走看看