/**
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
网友评论