php listener,PHP Event-Listener最佳实践实现

嗯,从实现角度看,确实有三种不同的方法可以做到这一点(请注意,这些是面向对象的设计模式,但是您可以根据需要在功能上或过程上实现它们)。

1.观察者模式

您可以实现观察者模式。 基本上,您会将可以引发事件的所有事情作为主题。 然后,您要听的类/代码将绑定到它想听的内容。 假设您有一个名为Foo的控制器。如果您想听,可以致电$fooController->attach($observer);。然后,只要该控制器想说些什么,它就会将事件分派给所有观察者。

这确实非常适合于通知系统(以扩展类的功能)。 它不太适合实时修改代码的行为。

2.装饰图案您还可以实现装饰器模式。 基本上,您将要修改的对象放入“对象”,然后将其“包装”到一个您要更改的新对象中。 这确实非常适合于修改和扩展行为(因为您可以从包装的类中选择性地覆盖功能)。

如果您已定义接口并期望对象符合它们,那么这将非常有效。 如果您没有接口(或没有正确使用它们),那么装饰器模式可以为您做的大部分事情都会丢失。

还要注意,这实际上不是事件的一种处理方式,而是一种修改对象行为的方式。

3.中介者模式

您也可以使用调解器。 基本上,您将拥有一个全球调解员来跟踪您的听众。 当您想触发事件时,可以将事件发送给调解器。 然后,调解器可以跟踪哪些侦听对象想要接收该事件,并正确传递消息。

这具有居中的优势。 意味着多个发件人可以发送相同的事件,而发送给侦听器的发送者却没有区别...

我在博客文章中对此主题进行了扩展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值