PHP设计模式-单例模式(Singleton For PHP)
来源:互联网 发布:java list remove方法 编辑:程序博客网 时间:2024/05/20 10:57
转自:http://www.cnblogs.com/bluebirds/p/6096537.html
今天讲单例设计模式,这种设计模式和工厂模式一样,用的非常非常多,同时单例模式比较容易的一种设计模式。
一、什么是单例设计模式
单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。
二、单例模式的技巧
- 利用$_instance私有变量来保存类的唯一实例化对象;
- 设计一个getInstance对外公开的函数,可以获取类唯一实例;
- 防止用户用new实例化,和克隆,构造两个__construct、__clone私有函数;
三、单例模式的应用场景
数据库设计,我们发送一次请求,可能会需要访问不同的表,那么如果每次访问都 new 一个实例,那必然会造成资源的浪费,所以使用单例模式,可以很好的节省资源。
单例类:
/** * Singleton pattern */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 = "这是一个新对象" . "<br>"; }else{ self::$_msg = "这个是一个旧的对象" . "<br>"; } 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
- PHP设计模式-单例模式(Singleton For PHP)
- PHP 设计模式 单例模式(Singleton)
- PHP设计模式----单例模式(singleton)
- PHP 设计模式 单例模式(Singleton)
- PHP设计模式----单例模式(singleton)
- PHP设计模式之单例模式(Singleton)
- 魔兽争霸之PHP设计模式-单件模式[Singleton]
- PHP单例模式(Singleton Pattern)
- PHP Trait实现Singleton单例模式
- PHP 实现单件(singleton)模式
- 设计模式---单例模式(singleton)
- 设计模式--单例模式(Singleton)
- 设计模式--单例模式(Singleton)
- 设计模式-单例模式(Singleton)
- 【设计模式】-单例模式(Singleton)
- 设计模式---单例模式(singleton)
- 设计模式 -- 单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- Problem D. Clones and Treasures XVII Open Cup named after E.V. Pankratiev||简单模拟
- 微信支付通知方法-附上部分代码
- TabLayout的TabItem自定义
- 大富翁游戏
- TaskRun 方法
- PHP设计模式-单例模式(Singleton For PHP)
- php长连接和短连接
- JS几种数组遍历方式以及性能分析对比
- 输入一个链表,反转链表后,输出链表的所有元素。
- Learning the interface
- javamail模拟邮箱功能--邮件回复-中级实战篇【邮件回复方法】(javamail API电子邮件实例)
- 树莓派3b安装raspbian系统
- Python网络爬虫学习笔记(第一周)
- LeetCode题解(Golang实现)--Median of Two Sorted Arrays