使用工厂来确保单实例行为

时间:2019-02-11 09:13:14

标签: php singleton factory

在PHP中,我正在使用一个客户端,该客户端连接到端口并一直监听该端口(使用while循环)。如果消息到达,则调用回调函数。 问题是每个客户端只能设置一个回调函数。为了没有几十个客户端,每个客户端仅侦听一个订户,我想将客户端封装到另一个包含一个通用回调函数的类中。此功能会将收到的消息分派给相应的订户。

在我使用的框架中,也使用了工厂模式。

我想知道是否可以使用工厂来确保仅创建一个客户端实例。可以的话,该怎么做?

在当前的实现中,类似

private function getClient() {
    if(static::$client == null) 
    {
        static::$client = new Client();
    }
    return static::$client
}

但是我认为,由于getClient()方法的高度依赖(这不再可互换了),这是一个糟糕的设计。

第二个问题是,如果我创建另一个封装类(在其中定义了客户端),我将始终覆盖回调函数。

如何确保只有一个带有一个客户端的封装类实例正在运行以正确分派所有注册的订户?这是工厂的任务吗?还有其他方法吗?

谢谢

0 个答案:

没有答案