张德长

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

设计模式-观察者模式Observe的实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 观察者模式
/// by:zdz
/// date:20220328
/// </summary>
public class Dispatcher : Singleton<Dispatcher>
{
public delegate void ActionHandler(params object[] param);
private Dictionary<int, ActionHandler> handlerDictionary = new Dictionary<int, ActionHandler>();
/// <summary>
/// 增加监听
/// </summary>
/// <param name="id"></param>
/// <param name="handler"></param>
public void AddListener(int id, ActionHandler handler)
{
if (handlerDictionary.ContainsKey(id))
{
handlerDictionary[id] += handler;
}
else
{
handlerDictionary.Add(id, handler);
}
}
/// <summary>
/// 移除监听
/// </summary>
/// <param name="id"></param>
/// <param name="handler"></param>
public void RemoveListener(int id, ActionHandler handler)
{
if (handlerDictionary.ContainsKey(id))
{
if (handlerDictionary[id] != null)
{
handlerDictionary[id] -= handler;
}
else
{
handlerDictionary.Remove(id);
}
}
}
/// <summary>
/// 派发
/// </summary>
/// <param name="id"></param>
/// <param name="param"></param>
public void Dispatch(int id, params object[] param)
{
if (handlerDictionary.ContainsKey(id))
{
if (handlerDictionary[id] != null)
{
handlerDictionary[id](param);
}
}
}
}

 

posted on   张德长  阅读(41)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示