为了账号安全,请及时绑定邮箱和手机立即绑定

这个的每句话怎么理解。

class Car {
    private function __construct() {
        echo 'object create';
    }

    private static $_object = null;
    public static function getInstance() {
        if (empty(self::$_object)) {
            self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
        }
        return self::$_object;
    }
}
//$car = new Car(); //这里不允许直接实例化对象
$car = Car::getInstance(); //通过静态方法来获得一个实例

这个的每句话怎么理解。

正在回答

3 回答

私有构造方法  你就可以理解为 因为构造方法是实例化后无论你调不调用 你都会运行的  但是它现在私有了 别的类不能用,所以导致不能实例化 只能静态调用

0 回复 有任何疑惑可以回复我~

在设计模式中有只有单态模式,就是利用私有构造实现的,构造方法私有化,就不能通过new object();来实现,只能通过内本身的静态方法去实现构造 self::construct();

0 回复 有任何疑惑可以回复我~
class Car {
    private function __construct() {    //构造方法在被调用直接加载,私有的构造方法,不允许直接实例化对象,
                                        通过静态方法来获得一个实例!
        echo 'object create';
    }

    private static $_object = null;     //常量
    public static function getInstance() {        //声明一个静态的方法,用来实例化构造函数。
        if (empty(self::$_object)) {
            self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象
        }
        return self::$_object;       //这里都不懂回去再学一次
    }
}
//$car = new Car(); //这里不允许直接实例化对象
$car = Car::getInstance(); //通过静态方法来获得一个实例


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这个的每句话怎么理解。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信