今天面试聊了单例设计模式,手写单例模式代码:
class Single{
private static $instance;
public static function getIntance(){
if(isset(self::$instance)){
return self::$instance;
}else{
return self::$instance=new self();
}
}
}
考虑到该代码仍然可以 new Singe() 出对象所以修改后该是这样的:
class Single{
private static $instance;
private function __construct(){}
public static function getIntance(){
if(isset(self::$instance)){
return self::$instance;
}else{
return self::$instance=new self();
}
}
private function __clone(){}
}
如果是在多线程模式下要考虑枷锁的问题