1
zhongkouwei 2018-04-20 19:54:51 +08:00 1
代码中有错误:应该这样获取吧
//静态方法,创建实例 public static function getInstance($ownerUser){ if(!self::$instance instanceof self){//self 指类,this 代表实例,这里指代静态属性,使用 self self::$instance = new self($ownerUser); } return self::$instance; } |
2
zhongkouwei 2018-04-20 19:57:56 +08:00
2、你在销毁实例里面销毁的是 instance,单例对象 mary 本身并没有被销毁。instance 是用来判断对象是否已被创建,你把它销毁后只会让下一个 jack 请求再创建一个 jack 对象,然后实际上就存在了两个对象。
|
3
leven87 OP @zhongkouwei 感谢回复。我们明白你的意思。其实我的代码是对单例模式做了点改进,想让 Jack 来请求的时候,如果单车已经有人了,就直接返回空。不过我有新思路了,改写下 destroyInstance()方法。如下:
//静态方法,销毁实例 public static function destroyInstance(&$instance){ self::$instance = null; $instance = null; } SingletonBike::destroyInstance($singletonBike); 将$singletonBike 当作参数给 destroyInstance 销毁。 |