Php类抽象

时间:2011-10-31 19:08:21

标签: php

我找到了一个简单的课程,如下:

abstract class SingleTon {
    /**
     * Prevents direct creation of object.
     *
     * @param  void
     * @return void
     */
    final protected function __construct() {}

    /**
     * Prevents to clone the instance.
     *
     * @param  void
     * @return void
     */    
    final protected function __clone() {}

    /**
     * Gets a single instance of the class the static method is called in.
     *
     * See the {@link http://php.net/lsb Late Static Bindings} feature for more
     * information.
     *
     * @param  void
     * @return object Returns a single instance of the class.
     */
    final static public function getInstance(){
        static $instance = null;

        return $instance ?: $instance = new static;
    }
}

问题是,使用abstract class SingleTon代替class SingleTon是否有意义?我的意思是......

正如您所见, _ 构造 受到保护, _clone 。到目前为止,我理解“抽象”对我来说对于使用抽象是无意义的,因为我已经无法实例化该类,不是吗?

1 个答案:

答案 0 :(得分:0)

克隆一个单身人士没有多大意义 - 那么你就有了一个双重身份,而且它不再是一个单身人士了。同样,保护构造函数也是有道理的,因为这个类唯一能做的就是在第一次调用getInstance()时创建单例。

某人实例化对象并不需要单独的对象直到以后才是不合理的,所以将实际的初始化逻辑放入getInstance方法是有意义的 - 这会将单例对象的创建延迟为迟到了。