<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...这样写根本拿不到对象实例吧?
你用一个单件实例管理连接池就行了,弄这么多子类多麻烦。