设计模式中的单例模式是一个简单但是会经常用到的设计模式,那怎么理解以及它有什么用呢?
PHP以及其他的Java,C++等面向对象编程语言在开发中类肯定是要经常用到的,很多时候对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;一个系统只能有一个窗口管理器或文件系统;一个系统只能有一个计时工具或ID(序号)生成器。
如何做到这点呢?
我们通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例
<?php
//单例模式
class sigle{
protected static $ins = null;//定义一个静态变量用以保存类自身的实例
public static function getIns(){
if(self::$ins === null){
self::$ins = new self();
}
return self::$ins;
}
//以下措施是为了避免通过继承,克隆达到多个实例的目的
//方法前加final,则方法不能被覆盖,类前加fianl,则类不能被继承
final protected function __construct(){
}
//封锁clone
final protected function __clone(){
}
}
$s1 = sigle::getIns();
$s2 = sigle::getIns();
if($s1 === $s2){
echo '是一个对象';
}else{
echo '不是一个对象';
}