ホームページ > バックエンド開発 > PHPチュートリアル > php多子类继承的单例类实现方式

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

WBOY
リリース: 2016-06-06 20:13:35
オリジナル
1114 人が閲覧しました

<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>
ログイン後にコピー
ログイン後にコピー

上面有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>
ログイン後にコピー
ログイン後にコピー

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

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

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

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート