单例模式
来源:互联网 发布:淘宝定制品可以退货吗 编辑:程序博客网 时间:2024/06/05 10:14
因此想防止外部的不断进行实例化对象,对其析构方法(__construct())进行"保护":即protected,让外部不能直接进行实例化
思考:外部不能实例化该类,相当于关闭了一扇门,那么要打开一个出口进行该类的实例化!!而且应该在该类被继承(或者该类被克隆)之后还是一个对象
思路:
1,先定义一个普通的类
2,封锁外部 new 操作3,打开一个接口(唯一的路径) 可以进行 new 对象
4,在唯一的开放方法中,先进行判断
5,使用 final 来防止继承时,被修改权限(final:在方法前加上final,则该类被继承时内的方法不能被覆盖,若是类前加final,则该类不能被继承)
6,防止被克隆
<?php
header("content-type:text/html;charset=utf-8");
class Single{
protected static $ins=null;
public static function getIns(){
if (self::$ins==null) {
self::$ins=new single();
}
return self::$ins;
}
final protected function __construct(){
}
protected function __clone(){
}
}
/*//证明继承之后依然是同一个对象
class Mi extends Single {
}
$g1 = Mi::getIns();
$g2 = Mi::getIns();
if ($g1===$g2) {
echo " 是一个对象 ";
}else{
echo " 不是一个对象 ";
}*/
/* $g1 = Single::getIns();
$g2 = clone $g1;//已经可以证明不能被克隆
if ($g1===$g2) {
echo " 是一个对象 ";
}else{
echo " 不是一个对象 ";
}*/
$g1 = Single::getIns();
$g2 = Single::getIns();
if ($g1===$g2) {
echo " 是一个对象 ";
}else{
echo " 不是一个对象 ";
}
?>
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- qualcomm平台的camera架构
- RAC是一种并行模式
- codeforces 733D Kostya the Sculptor
- c++
- PHP
- 单例模式
- JVM中的垃圾收集算法
- 51Node 1065----最小正子段和
- JVM性能调优
- 从零开始学JDBC--1.14 BeanUtils组件的用法
- 经典问题四. (区间dp) 凸多边形最优三角形划分
- 利用HTML和CSS实现常见的布局
- 成为java高手的八大条件
- 增加pdo_mysql单独安装