今天开始,鲤鱼蜗牛将开始进行PHP设计模式的学习,首先学习最简单且常用的单例模式!!!
什么是单例模式单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式特点(三私一公) 私有的构造方法 (防止类外实例化)
私有的克隆方法 (防止通过克隆生成对象)
私有的静态属性 (保存类的实例)
公有的静态方法 (调取这个类相当一个接口 )
代码实例 不能被继承final class single{// 定义一个私有属性,在构造方法中显示private $random;// 定义一个静态私有属性,为的是实例化后赋值给objstatic private $obj;// 构造方法中random判断实例化的次数,并可进行比较private function __construct(){return $this->random=rand(1,999999999);}static public function getins(){// instanceof判断对象是否实例化if(self::$obj instanceof single){return self::$obj;}else{return self::$obj = new single();}}// final类防止被克隆后实例化类被重写// public function __clone(){// echo "单例模式失败";// }private function __clone(){echo "单例模式失败";}}// 调用静态方法getins()验证实例化次数$sing = single::getins();$sings= single::getins();var_dump($sing);echo "
";var_dump($sings);echo "
";// 检测是否只实例化过一次(验证该类只有一个实例);if($sing == $sings){echo "单例模式成功";}else{echo "单例模式失败";}?>