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

京东那个做快消的网站厦门海投工程建设有限公司网站

京东那个做快消的网站,厦门海投工程建设有限公司网站,作图软件app,推广app的方法和策略事件派发机制主要用来解决: 代码解耦和维护,一般在代码中会要管理一些闭包函数 然后在指定的业务中触发运行闭包函数逻辑用了事件派发机制 就可以先把要处理的事件 挂在在一个事件管理类中 上面挂满要处理的闭包函数然后通过dispatch 出发要执行的任务 也就是闭包1. PHP中实…事件派发机制主要用来解决: 代码解耦和维护,一般在代码中会要管理一些闭包函数 然后在指定的业务中触发运行闭包函数逻辑用了事件派发机制 就可以先把要处理的事件 挂在在一个事件管理类中 上面挂满要处理的闭包函数然后通过dispatch 出发要执行的任务 也就是闭包1. PHP中实现 在 PHP 中你可以使用事件派发机制来实现基于观察者模式的事件驱动开发。下面是一个简单的示例来展示如何实现事件派发机制 ?phpclass EventDispatcher {private $listeners [];public function addListener($eventName, $listener){$this-listeners[$eventName][] $listener;}public function dispatch($eventName, $data null){if (isset($this-listeners[$eventName])) {foreach ($this-listeners[$eventName] as $listener) {call_user_func($listener, $data);}}} }// 示例使用 $dispatcher new EventDispatcher();// 添加事件监听器 $dispatcher-addListener(user.registered, function ($data) {echo 用户注册成功{$data}\n; });$dispatcher-addListener(user.loggedIn, function ($data) {echo 用户登录成功{$data}\n; });// 模拟触发事件 $dispatcher-dispatch(user.registered, user123); $dispatcher-dispatch(user.loggedIn, user456);在上面的示例中我们创建了一个名为 EventDispatcher 的事件调度器类。该类包括 addListener() 方法用于添加事件监听器和 dispatch() 方法用于触发事件并通知相应的监听器。 通过调用 addListener() 方法我们可以为特定的事件名称注册一个或多个监听器。这些监听器是以匿名函数的方式定义的用于处理事件被触发时的逻辑。 在 dispatch() 方法中我们检查指定事件名称的监听器列表是否存在然后依次调用每个监听器函数并将事件数据作为参数传递给它们。 最后在示例的最后部分我们通过调用 dispatch() 方法模拟触发了两个事件然后相应的监听器函数被调用并处理事件。 运行以上代码将会输出如下信息 用户注册成功user123 用户登录成功user456 这样就实现了一个简单的事件派发机制。在实际的应用中你可以根据需要扩展和定制事件调度器添加更多的事件和监听器以实现更复杂的业务逻辑。 2 go语言中实现 在 Go 语言中你可以使用通道channel和协程goroutine的特性来实现一个简单的事件派发机制。下面是一个示例代码 package mainimport (fmttime )type Event struct {Name stringData interface{} }type EventDispatcher struct {listeners map[string][]chan interface{} }func NewEventDispatcher() *EventDispatcher {return EventDispatcher{listeners: make(map[string][]chan interface{}),} }func (ed *EventDispatcher) AddListener(eventName string, listener chan interface{}) {if _, ok : ed.listeners[eventName]; !ok {ed.listeners[eventName] make([]chan interface{}, 0)}ed.listeners[eventName] append(ed.listeners[eventName], listener) }func (ed *EventDispatcher) Dispatch(eventName string, data interface{}) {if listeners, ok : ed.listeners[eventName]; ok {event : Event{Name: eventName,Data: data,}for _, listener : range listeners {go func(ch chan interface{}) {ch - event}(listener)}} }func main() {dispatcher : NewEventDispatcher()// 添加事件监听器listener1 : make(chan interface{})dispatcher.AddListener(event1, listener1)listener2 : make(chan interface{})dispatcher.AddListener(event2, listener2)// 模拟触发事件dispatcher.Dispatch(event1, data1)dispatcher.Dispatch(event2, data2)// 读取监听器收到的事件go func(ch chan interface{}) {for {event : -chfmt.Println(event)}}(listener1)go func(ch chan interface{}) {for {event : -chfmt.Println(event)}}(listener2)// 等待事件处理time.Sleep(time.Second) }在上述示例中我们定义了 Event 结构体来表示事件其中包含事件名称和事件数据。EventDispatcher 结构体用于管理事件监听器和事件派发。通过 AddListener 方法可以为指定事件名称注册一个事件监听器而 Dispatch 方法用于派发事件并通知相应的监听器。 在 main 函数中我们实例化了一个 EventDispatcher 对象并添加了两个事件监听器分别监听名为 “event1” 和 “event2” 的事件。 然后我们使用 Dispatch 方法模拟触发了 “event1” 和 “event2” 事件并将相关数据传递给监听器。 最后我们在两个协程中创建了监听器函数用于处理收到的事件。通过使用通道读取操作 -ch监听器函数可以不断等待事件的到来。 运行以上代码将会得到类似如下的输出 {event1 data1} {event2 data2} 这样就实现了一个简单的事件派发机制。你可以根据需要扩展该事件派发器增加更多事件和监听器以满足具体的业务需求。同时需要注意对于涉及并发的操作需要进行适当的同步和错误处理。
http://www.hkea.cn/news/14523238/

相关文章:

  • 重庆沙坪坝火车站微信网页版登陆入口
  • 深圳网站建设开发我爱南宁地铁app下载
  • 营销型网站要点没有经验可以做网站编辑吗
  • 2021年建站赚钱路由器上建网站
  • 做网站单网页企业网站备案教程
  • 单纯做网站的公司多站点网站群的建设与管理系统
  • 济南哪里有做网站的网站开发技术的发展
  • 免费做网站的网页重庆模板网站哪个好
  • phpmysql网站开发如何用google搜索产品关键词
  • 微网站开发需求成品在线短视频免费入口
  • 网站建设方案设计pptdw制作网页的代码
  • 2017一起做网店网站企业的网站建设策划书
  • 凡网站建设在线网站建设
  • 寮步营销型网站建设泰安可信的网站建设
  • 山东网站建设培训网站注册协议
  • 福州网站建设seowordpress 显示多媒体
  • 四川省建设厅网站最好的书籍设计网站
  • vs2013可以做网站么贵州网站建设价格
  • 做网站软件 手机wordpress 导航网站模板
  • 网站怎么做才能赚钱吗生产公司简介模板
  • 自己做彩票网站简单吗html网页制作代码加图
  • 爱站网反链查询永久免费的网站服务器有哪些平台
  • 个人网站可以做百度竞价淄博市住房和城乡建设局官方网站
  • 域名查询注册沈阳百度推广优化
  • 淄博专业网站建设哪家专业wordpress 777权限
  • 阿里云网站建设模板收费的网站如何免费
  • 口碑好的网站建设平台专业的网站建设设计价格
  • 高密营销型网站建设西餐厅网站源码
  • 网站建好后如何上线网站建设上传图片不显示
  • 哪个网站做的win10系统海口网站建设优化公司