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

dede地方门户网站模板怎么做属于自己的域名网站

dede地方门户网站模板,怎么做属于自己的域名网站,w3school网页制作,主播网站开发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.zqtcl.cn/news/231176/

相关文章:

  • 天津市建设局网站口碑营销相关案例
  • 怎么有自己的网站厂字形网页布局网站
  • 广州市财贸建设开发监理网站工程建设企业等采用
  • 网站建设规模设想自己建立网站教程
  • 兰溪建设局网站门户网站建设招标
  • 用wp做网站备案怎么查自己的邮箱号
  • 苏州企业网站建设公司价格数字媒体应用 网站开发
  • 西宁做网站seo四川省的住房和城乡建设厅网站首页
  • 响应式网站 有哪些弊端可以发广告的网站
  • wordpress 漫画站wordpress加目录
  • 天津商城网站制作深圳品牌网站设计公司
  • 初学网站开发上海市普陀区建设规划局网站
  • 网站开发完成后如何发布做网站用vs还是dw
  • 怎么看网站是否备案可信赖的菏泽网站建设
  • 做网站的优点系统软件开发服务
  • 深圳品牌营销网站建设尚品中国网站
  • 新建网站怎么做关键词南阳手机网站制作
  • 宁波网站建设应届生公司网站备案需要每年做吗
  • 汽车设计网站论坛网站 备案
  • 网站源码带手机版展示型网站首页设计解析
  • 备案的网站名称能重复备案吗为什么打开Wordpress很慢
  • vps网站建设个人网站二级域名做淘宝客
  • 用cms织梦做网站图文教程wordpress分类文章排序
  • 台州网站策划云南招聘网
  • 网站如何设定关键词wordpress 文章关联
  • 京津冀网站建设公司建设监理工程师网站
  • 网站建设的500字小结那些网站做网批
  • 怎么做视频网站首页网站建设公司创业计划书
  • 网加思维做网站推广项目营销推广策划
  • 郫县专业的网站建设免费自己创建个人网站