Home > Backend Development > PHP Tutorial > php多子类继承的单例类实现方式

php多子类继承的单例类实现方式

WBOY
Release: 2016-06-06 20:13:35
Original
1118 people have browsed it

<code class="php">class Parents
{
    protected $client;
    protected function __construct()
    {
        //一系列操作....
        $this->client = new $this->clientName();
    }
    public static function getInstance()
    {
        if (static::$ins === null)
        {
            static::$ins = new static();
        }
        return static::$ins;
    }
}
class Son1
{
    protected static $ins = null;
    protected $clientName = 'Test1';
}
class Son2
{
    protected static $ins = null;
    protected $clientName = 'Test2';
}</code>
Copy after login
Copy after login

上面有1个父类,多个子类,现在我希望每个子类实现一个单例,于是有了上面的写法。因为每个子类除了客户端的$clientName不一样外,其他的操作都是一样的,为了不用在每个子类都要实现一次,我采用了上面这种继承方式,因为每个$clientName的实例都会开启socket连接,所以我想使用单例的模式,请问上面的这种方式有没有什么问题或者说有什么不方便不友好的?该如何解决

回复内容:

<code class="php">class Parents
{
    protected $client;
    protected function __construct()
    {
        //一系列操作....
        $this->client = new $this->clientName();
    }
    public static function getInstance()
    {
        if (static::$ins === null)
        {
            static::$ins = new static();
        }
        return static::$ins;
    }
}
class Son1
{
    protected static $ins = null;
    protected $clientName = 'Test1';
}
class Son2
{
    protected static $ins = null;
    protected $clientName = 'Test2';
}</code>
Copy after login
Copy after login

上面有1个父类,多个子类,现在我希望每个子类实现一个单例,于是有了上面的写法。因为每个子类除了客户端的$clientName不一样外,其他的操作都是一样的,为了不用在每个子类都要实现一次,我采用了上面这种继承方式,因为每个$clientName的实例都会开启socket连接,所以我想使用单例的模式,请问上面的这种方式有没有什么问题或者说有什么不方便不友好的?该如何解决

亲,我想问你的代码测试过吗?protected的构造函数搭配一个public的getInstance...这样写根本拿不到对象实例吧?

你用一个单件实例管理连接池就行了,弄这么多子类多麻烦。

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template