观察者模式---C#中的事件

C# 中的事件 遵循“发布--订阅”的设计模式。在这种模式中,一个类公布能够出现的事件,然后任意数量的类都可以订阅这个事件,一旦事件发生,运行环境就负责通知每个订户,告诉她们事件已经发生了。

 

namespace @event
{  
    class InventoryChangeEventArgs{
        public InventoryChangeEventArgs(string sku, int change)
        {
            this.sku = sku;
            this.change = change;
        }
        string sku;
        int change;
        public string Sku
        {
            get
            {
                return sku;
            }
        }
        public int Change
        {
            get
            {
                return change;
            }
        }

    }

    class InventoryManager {
        public delegate void InventoryChangeEventHandler(object source,InventoryChangeEventArgs e);
        public event InventoryChangeEventHandler OnInventoryChangeHandler;
        public void UpdateInventory(string sku, int change)
        {
            InventoryChangeEventArgs e = new InventoryChangeEventArgs(sku,change);
            //检查事件是否有什么与方法OnInventoryChangeHandler方法相关的订户。如果有,实际事件被引发了。
            if (OnInventoryChangeHandler != null)
                OnInventoryChangeHandler(this, e);
        }
    }

    class InventoryWatcher {
        public InventoryWatcher(InventoryManager inventoryManager) {
            this.inventoryManager = inventoryManager;
            inventoryManager.OnInventoryChangeHandler += new InventoryManager.InventoryChangeEventHandler(OnInventoryChange); //与代表关联的方法
        }
        InventoryManager inventoryManager;
        void OnInventoryChange(object source, InventoryChangeEventArgs e)//方法
        {
            int change = e.Change;
            Console.WriteLine("{0}---{1}",e.Sku,e.Change);
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            InventoryManager inventoryManager = new InventoryManager();
            InventoryWatcher inventoryWatch = new InventoryWatcher(inventoryManager);
            inventoryManager.UpdateInventory("ttttt",22);
            inventoryManager.UpdateInventory("sssss",222);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值