php - 使用工厂确保单个实例行为
问题描述
在 PHP 中,我使用的是一个客户端,它连接到一个端口并一直在监听它(使用 while 循环)。如果消息到达,则调用回调函数。问题是您只能为每个客户端设置一个回调函数。为了没有几十个客户端,每个客户端只听一个订阅者,我想将客户端封装到另一个类中,该类持有一个通用回调函数。该函数将传入的消息分发给相应的订阅者。
在我使用的框架中,也使用了工厂模式。
我想知道使用工厂来确保只创建一个客户端实例是否可以/干净。如果是,该怎么做?
在当前的实现中,有类似的东西
private function getClient() {
if(static::$client == null)
{
static::$client = new Client();
}
return static::$client
}
但我认为,由于 getClient() 方法的高度依赖性(它不再可互换),这是一个糟糕的设计。
第二个问题是,如果我创建另一个封装类(其中定义了客户端),我将始终覆盖回调函数。
如何确保只有一个具有一个客户端的封装类实例正在运行以正确调度所有注册的订阅者?这是工厂的任务吗?还有其他方法吗?
谢谢
解决方案
推荐阅读
- sql - 带有子查询的无效标识符
- php - 绕过 HTML 实体
- powerbi - 影响度量的非活动关系
- firebase - Flutter Firebase - 如果用户已被禁用/删除,则流式监听
- r - 在 Jupyter 笔记本中直接在 R 中绘制临床研究主题流程图
- javascript - 如何在一页上启用多个 javascript 幻灯片?
- php - 如何在使用 laravel 提交的表单上修复页面重新加载相同的问题
- javascript - Node.js 中的事件模块问题
- vb.net - 我有一个问题,每当我打开水晶报表时,我都会收到此错误:“无法加载数据库信息。文件临时错误”
- javascript - 在两个不同的页面上加载两个不同的 AJAX 请求