设计模式之:观察者模式
C#观察者模式
这是我自己写的一个观察者模式的代码。
// An highlighted block
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public delegate void Notify(int EventId , Object args);
public struct NotifyEvent
{
public event Notify mEvent;
public void Sent(int EventId, Object args) {
if (mEvent != null) {
mEvent(EventId, args);
}
}
public void Cancel()
{
if (mEvent != null)
{
mEvent = null;
}
}
}
public class YYEventManager
{
private static YYEventManager yyInstance;
private YYEventManager() { }
public static YYEventManager GetInstance() {
if (yyInstance == null) {
yyInstance = new YYEventManager();
}
return yyInstance;
}
public List<NotifyEvent> mEventList = new List<NotifyEvent>();
public void RegisterEvent(int EventId, Notify fun) {
mEventList[EventId].mEvent += fun;
}
public void SendEvent(int EventId, Object args)
{
mEventList[EventId].Sent(EventId, args);
}
public void CancelEvent(int EventId, Notify fun)
{
mEventList[EventId].mEvent -= fun;
}
public void OnDestroy()
{
for (int i = 0; i < mEventList.Count; i++)
{
mEventList[i].Cancel();
}
}
}
欢迎加群:111320945 有什么问题,大家一起讨论。