单例模式

2017-05-29  本文已影响3人  散装咖啡
/**
1,普通类
2,封锁new操作
3,留个接口来new对象
4,getIns先判断实例 
5,用final,防止继承时,被修改权限
6,封锁clone
*/
class sigle
{
    protected static $ins = null;   
    public static function getIns()
    {
        if( self::$ins === null )
        {
            self::$ins = new self();
        }
        return self::$ins;
    }
    
    public function get()
    {
        return 1;
    }
    //方法前加final,不能被覆盖.类前加final,不能被继承
    final protected function __construct(){ }
    final protected function __clone() { }
}

$s1 = sigle :: getIns();
//$s2 = clone $s1;
echo $s1->get();

参考文章 https://wenku.baidu.com/view/b4c78b4702768e9951e738fb.html

上一篇下一篇

猜你喜欢

热点阅读