当前位置: 首页 > news >正文

建设网站答辩情况wordpress 直播插件

建设网站答辩情况,wordpress 直播插件,wordpress文章签名插件,产品营销推广方式EventSystem 事件系统 事件系统在开发中必不可少事件系统使用观察者模式可以极大程度降低程序的耦合#xff0c;之前的文章也讲过事件系统但是不够高效简洁#xff0c;如何轻便高效优雅的实现一个事件呢#xff1f;依然基于之前的AssemblyManager 程序集管理器和SingletonS…EventSystem 事件系统 事件系统在开发中必不可少事件系统使用观察者模式可以极大程度降低程序的耦合之前的文章也讲过事件系统但是不够高效简洁如何轻便高效优雅的实现一个事件呢依然基于之前的AssemblyManager 程序集管理器和SingletonSystem 单例管理系统进行开发主要原理也是根据反射去获取事件的接口使用反射进行实例化处理类而非人工手动订阅事件。 1.IEvent public interface IEvent {Type GetEventType();void Invoke(object self); }2.EventHandler public abstract class EventHandlerT : IEvent where T : struct {private readonly Type _selfType typeof(T);public Type GetEventType(){return _selfType;}public abstract void Handler(T eventStruct);public void Invoke(object self){try{Handler((T)self);}catch (Exception ex){Debug.LogError(${_selfType.Name} Error : {ex.Message});return;}} }3.EventInfo public sealed class EventInfo {public readonly Type Type;public readonly IEvent Event;public EventInfo(Type type, IEvent event){Type type;Event event;} }4.EventSystem public class EventSystem : SingletonEventSystem {private readonly OneToManyListType, IEvent _events new();private readonly OneToManyListint, EventInfo _assemblyEvents new();protected override void Load(int assemblyName){foreach (Type type in AssemblyManager.ForEach(assemblyName, typeof(IEvent))){IEvent event (IEvent)Activator.CreateInstance(type);if (event ! null){Type thisType event.GetEventType();_events.Add(thisType, event);_assemblyEvents.Add(assemblyName, new EventInfo(thisType, event));}}}protected override void UnLoad(int assemblyName){if(_assemblyEvents.TryGetValue(assemblyName,out ListEventInfo events)){foreach (EventInfo info in events){_events.RemoveValue(info.Type, info.Event);}_assemblyEvents.RemoveByKey(assemblyName);}}public void PublishTEventData(TEventData eventData) where TEventData : struct{if (!_events.TryGetValue(eventData.GetType(), out ListIEvent list))return;foreach (IEvent event in list){try{event?.Invoke(eventData);}catch (Exception ex){Debug.LogError(ex.Message);return;}}}public override void Dispose(){_events.Clear();_assemblyEvents.Clear();base.Dispose();} }这里的每个事件传递的参数可以使用引用池进行管理避免重复创建相同的对象消耗性能。 5.测试 public class Test : MonoBehaviour {void Start(){SingletonSystem.Initialize();AssemblyManager.Initialize();}private void Update(){SingletonSystem.Update();if (Input.GetKeyDown(KeyCode.P)){EventSystem.Instance.PublishAgeEvent(new AgeEvent() { Age 18 });}} }public struct AgeEvent {public int Age; }public class AgeChangeHandler : EventHandlerAgeEvent {public override void Handler(AgeEvent eventStruct){Debug.Log(eventStruct.Age);} }
http://www.yutouwan.com/news/356762/

相关文章:

  • 提升网站权重的方法网站做搜索引擎优化
  • 建立网站批复企业网址是什么?
  • 自己怎么设置会员网站劳务分包网
  • 电子商务网站建设.pdfidea网站开发
  • 建设银行u盾用网站打不开响应式模板网站模板下载
  • 石狮市建设局网站如何免费做网络推广
  • 软件专业做学校网站论文怎么选题河北省住建和城乡建设厅网站首页
  • 甘肃省建设局网站首页宜昌网站优化
  • 网页添加兼容性站点怎么在工商网站做实名认证
  • 2在线做网站给新公司做网站要多少钱
  • 企业网站建设好的案例如何搭建一个企业子账号网站
  • 开平设计网站免费网站重生做军嫂
  • 做婚恋网站的翻译好吗绿色风格 网站
  • 做家教网站赚钱么竞价托管咨询微竞价
  • 象山县城乡建设局网站官方网站车联网是谁做
  • 电商网站开发脑图写论文的网站
  • 中国公路建设行业协会网站上wordpress网站前端优化
  • 建设网站文献seo短视频永久入口运营
  • 移动端网站怎么制作搜索引擎营销成功案例
  • 如何做哟个优惠券网站上海对外经贸大学
  • 商标怎么设计上海seo推广方法
  • 建网站就找伍佰亿在哪里购买域名
  • 广州建设网站公司哪家好西樵网站建设
  • 云南做网站公司哪家好网站建设培训网站
  • 国外网站如何建设百度网页入口官网
  • 确定网站建设的目的美工需要会哪些软件
  • 福州市建网站公司全网营销的四大优势
  • 揭阳网站建设揭阳网站建设 代表联系群众
  • 胶南做网站wordpress调用面包屑
  • 网站首页没有权重wordpress 内部链接