java 观察者 notify,NotifyCenter观察者模式

更像 订阅,项目需要,所以实现了一个简易的

using UnityEngine;

using System.Collections;

using System.Collections.Generic;

public delegate void HandlerNotifyCenter(System.Object arg);

[System.Serializable]

class Recver

{

public string name;

public GameObject recver;

public HandlerNotifyCenter handler;

public Recver()

{

}

public void InVoke(System.Object arg)

{

handler(arg);

}

}

public class NotifyCenter : MonoBehaviour

{

static public NotifyCenter ins;

List recvers = new List();

void Awake()

{

ins = this;

}

// Use this for initialization

void Start()

{

}

// Update is called once per frame

void Update()

{

}

public void addRecver(GameObject recver, string name, HandlerNotifyCenter handler)

{

// gameObject.SendMessage(msg);

Recver x = new Recver();

x.name = name;

x.handler = handler;

x.recver = recver;

recvers.Add(x);

}

public void removeRecver(GameObject recver, string name)

{

foreach (Recver obj in recvers)

{

if (name == obj.name && recver == obj.recver)

{

recvers.Remove(obj);

}

}

}

public void sendMessage(string msg, System.Object arg)

{

foreach (Recver obj in recvers)

{

if (msg == obj.name)

{

obj.InVoke(arg);

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值