我正在设计一个包,我希望根据观察者模式提供一个API:也就是说,有些点我想发出一个信号,触发零个或多个感兴趣的各方.那些感兴趣的人不一定需要了解彼此.
我知道我可以从头开始实现这样的API(例如使用一组通道或回调函数),但是想知道是否有一种构建这种API的首选方法.
在我使用过的许多语言或框架中,有一些标准方法可以构建这些API,使它们按照用户期望的方式运行:例如g_signal_*基于glib的应用程序,事件和addEventListener()JavaScript DOM应用程序的功能,或者用于多播代理的多播代理.净.
Go有什么类似的吗?如果没有,是否有其他方法可以构建这种类型的API,这在Go中更为惯用?
zzz*_*zzz 15
我会说从频道接收的goroutine在某种程度上是观察者的类比.因此,在Go中公开事件的惯用方法是从包(函数)返回通道.另一个观察是在Go程序中不经常使用回调.其中一个原因是强者的存在select statement.
最后请注意:有些人(我也是)将GoF模式视为Go反模式.
| 归档时间: |
|
| 查看次数: |
1266 次 |
| 最近记录: |