由于Erlang不是真正面向对象的,所以没有真正的单例类,但是我想
已注册的进程可以用作一个进程。

在应用程序内部使用已注册的进程来简化访问是一种好习惯吗?
缺点我看到例如您不能在一个节点内运行多个这样的应用程序实例。

以gui应用程序为例,该应用程序具有管理事件的流程以及负责声音的其他流程。
将这两个“singleton”作为已注册进程并像sound:play(file_name)那样调用它们,而不是存储pid并执行sound:play(Pid, file_name)是一个好习惯吗?

最佳答案

在注册名称下使用gen_server来做到这一点是相当普遍的。您可以从同一模块中导出函数,这些函数只需对所涉及的命名进程执行gen_server:call即可。

(可以说,Erlang比您可能更习惯于“真正”的面向对象。但这不是这个问题的意思。)

09-30 22:54