class B{
public $v1 = ; private static $instance; private function __construct(){}
public static function getNew(){
//如果本类中的$instance还没有数据
if( !isset(B::$instance) ){
B::$instance = new self;
}
return B::$instance;
}
private function __clone(){}
}
//$o1 = new B();//出错,因为构造方法私有了,
$o1 = B::getNew();
$o1->v1 = ; //修改
$o2 = B::getNew();
var_dump($o1);
echo "<br />";
var_dump($o2);
$o3 = clone $o1; //克隆对象
echo "<br />";
var_dump($o3);
$o1->v1 = ;
echo "<br />o1中的v1为:" . $o1->v1;
echo "<br />o2中的v1为:" . $o2->v1;
echo "<br />o3中的v1为:" . $o3->v1;

然后结果截图:

但是,有一个问题,虽然单例模式可以让类只是实例化一次,但是每一个类都有一个魔法函数clone,那么就可以创建的新的类,所以,我们要防止用clone创建新的类,就有了在我们的单例模式类里面给那个clone函数变成私有的,这样,我们在这类的外面就不能用clone函数了,代码如下:

 class B{
public $v1 = ; private static $instance; private function __construct(){}
public static function getNew(){
//如果本类中的$instance还没有数据
if( !isset(B::$instance) ){
B::$instance = new self;
}
return B::$instance;
}
//下面的这个private就是将clone变成私有的,在类的外面就不能用clone克隆了。
private function __clone(){}
}

最新文章

  1. android:configChanges=&quot;keyboard|keyboardHidden|orientation|screenSize&quot;
  2. Yii2 yii2-imagine的使用
  3. 看2015年TFC游戏大会,云计算何以唱主角
  4. 通过IIS不能连接远程数据库的问题
  5. Serv-U软件在64位操作系统下使用不了odbc解决方法
  6. Ext.MessageBox的用法
  7. 在 iOS 应用中直接跳转到 AppStore 的方法--备用
  8. 计算两点间的距离-hdu2001
  9. 采用max_dump_file_size 参数限制trc文件大小
  10. Java入门——(8)网络编程
  11. 关系型数据库工作原理-事务管理(二)(翻译自Coding-Geek文章)
  12. C#中获取文件信息的代码
  13. 为Oracle GoldenGate准备数据库
  14. 详解Linux安装GCC
  15. Jmeter测试报告
  16. unittest和pytest的区别
  17. Zookpeer集群节点
  18. mycat 单库分表
  19. Remove Duplicates from Sorted Array II leetcode java
  20. 【VUE】@click加上v-bind绑定切换类名及动画事件

热门文章

  1. python *args 和 ** kwargs
  2. SpringCloud学习之Feign 的使用(五)
  3. Maven:A cycle was detected in the build path of project &#39;xxx&#39;. The cycle consists of projects {xx}
  4. Adobe PhotoShop CS6中文破解版下载
  5. 理解String的intern()方法
  6. CentOS 7.3 下部署基于 Node.js的微信小程序商城
  7. mysql5.7.21源码安装
  8. Jackknife,Bootstrap, Bagging, Boosting, AdaBoost, RandomForest 和 Gradient Boosting的区别
  9. getComputedStyle() 和 getPropertyValue()
  10. JavaWeb开发中遇到问题汇总