PHP设计模式---单例模式

来源:互联网 发布:网络打印机ip 编辑:程序博客网 时间:2024/06/06 08:23

今天开始,LZ将开始进行PHP设计模式的学习,首先学习最简单且常用的单例模式!!!

什么是单例模式

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

为什么使用单例模式呢

使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。

单例模式特点(三私一公)

私有的构造方法 (防止类外实例化)
私有的克隆方法 (防止通过克隆生成对象)
私有的静态属性 (保存类的实例)
公有的静态方法 (调取这个类相当一个接口 )

代码实例

不能被继承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 "单例模式失败";}?>

原创粉丝点击