单例模式php 接口,PHP设计模式(四)单例模式(Singleton)

一、什么是单例设计模式

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。

二、单例模式的技巧

利用$_instance私有变量来保存类的唯一实例化对象;

设计一个getInstance对外公开的函数,可以获取类唯一实例;

防止用户用new实例化,和克隆,构造两个__construct、__clone私有函数;

三、单例模式的应用场景

数据库设计,我们发送一次请求,可能会需要访问不同的表,那么如果每次访问都 new 一个实例,那必然会造成资源的浪费,所以使用单例模式,可以很好的节省资源。

单例类

class DataBase

{

/**

* 静态成品变量,保存全局实例

*/

private static $_instance = null;

/**

* 测试变量,存储日志信息

*/

private static $_msg = null;

/**

* 私有构造方法,防止外界实例化对象

*/

private function __construct()

{

$connect = "连接数据库操作";

}

/**

* 私有化克隆方法,防止外键克隆对象

*/

private function __clone()

{

}

/**

* 静态方法,外界获取实例的唯一接口

* @return Object 返回对象唯一实例

*/

public static function getInstance()

{

if (!self::$_instance){

self::$_instance = new DataBase();

self::$_msg = "这是一个新对象" . "
";

}else{

self::$_msg = "这个是一个旧的对象" . "
";

}

return self::$_instance;

}

public function log()

{

echo self::$_msg;

}

}

客户端测试代码

$dbA = DataBase::getInstance();

$dbA->log();

$dbB = DataBase::getInstance();

$dbB->log();

$dbC = DataBase::getInstance();

$dbC->log();

输出结果:

这是一个新对象

这个是一个旧的对象

这个是一个旧的对象

“对象”?,程序员怎么可能有对象!~

参考

系列源地址

系列目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值