评论暂时关闭
博客评论暂时关闭, 有问题请发信件到邮箱ircman@163.com
单件(singleton)模式作为设计模式的一个典型而且简单的构造型模式, 已经在很多项目的实际开发中被广泛使用, 单件模式要求一个类有且仅有一个实例,然后提供一个全局的访问点.也就是其所有的相关操作都是基于同一个实例的引用.
单件模式的特点:
单件模式的优点:
下面通过一个简单的例子来说一些单件模式
在我们实际的应用中, 大家都知道数据库的连接资源是非常宝贵的, 通过数据库句柄到数据库的连接是独占的,每次的连接和关闭数据库都是一笔非常大的开销, 那么我们如何在应用程序中来共享数据库句柄呢? 我们可以通过单件模式实现.
以下程序用到三个PHP文件, 程序只是为了展示单件模式,本身不具备任何价值.
MySQL.php
class MySQL { private $dbhost = 'localhost'; private $dbuser = 'root'; private $dbpass = '123'; private $db = 'test'; public $guid; //====================================== // 函数: connect() // 功能: 连接数据库 // 返回: //====================================== public function __construct() { $this->link_id = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass); $this->guid = md5(uniqid()); if (!$this->link_id) { $this->halt("数据库连接失败.请检查连接参数."); return; } if (!mysql_select_db($this->db, $this->link_id)) { $this->halt("选择数据库".$this->db."失败."); return; } mysql_query("SET NAMES 'utf8'"); } }
Singleton.php
<?php class Singleton { private $_db; private static $_single = null; public static function getInstance() { if (self::$_single === null) self::$_single = new Singleton(); return self::$_single; } function __construct() { $this->_db = new MySQL(); } public function db() { return $this->_db; } } /* End of file */ /* Location: */
Test.php
<?PHP require_once ('MySQL.php'); require_once ('Singleton.php'); header('content-type:text/html; charset=utf-8'); echo '单件模式____________________________<br />'; $s1 = Singleton::getInstance()->db(); $s2 = Singleton::getInstance()->db(); echo '$s1->guid:'.$s1->guid.'<br />'; echo '$s1->guid:'.$s2->guid.'<br />'; echo ($s1 === $s2) ? 'true' : 'false'; echo '<br />'; echo '直接实例化对象________________________________<br />'; $d1 = new MySQL(); echo '$d->guid:'.$d1->guid.'<br />'; $d2 = new MySQL(); echo '$d1->guid:'.$d2->guid.'<br />'; echo ($d1 === $d2) ? 'true' : 'false'; ?>
将这三个文件放到一个目录中, 最后浏览test.php,可以看到
通过单件模式获取的2个对象guid参数任何时候都是相同的,且这两个对象是恒等的.
而直接实例出来的2个DB对象则刚好相反.
通过比较, 相信你已经很轻松的掌握了单件模式的特点.
转载请注明出处:http://www.suiyuan.org

真的有来世吗?
那么
我愿做
一只懂得飞翔
不懂爱情的小鸟
一朵瞬间开放
无声消融的雪花
甚至
窗前的一角蓝天
掀乱书页的风
落进
你手心里的
一滴小雨
推荐阅读无处安放的青春
这几天出差, 闲来无暇一直在手机上看这本小说, 优美细腻的笔锋, 忧伤婉约的爱情, 欲罢不能的愁绪, 这是就是吕婉的作品, 它说的不仅仅是爱情, 更多的是爱情的思考. 爱情与婚姻或许从来都不是因果的关系, 爱情真的可以让我们放弃一切吗? 包括我们的自私? 即使没有杜晓斌, 李然和周蒙或许也会分开, 因为还会有下一个杜晓斌. 我相信李然是深爱着蒙蒙的, 我们没有权利指责他的自私, 他和杜晓斌在一起完全是因为责任吗? may be not. 每个人都有权利追求自己想要的. 或许这就是青春, 留下的总是那些支离破碎, 唯美而有伤感的片段.
P.S 佟大为和江一燕拍的电视剧很不错, 诠释的很完美, 只不过相对来讲, 我还是更喜欢小说的叙述.
网上转载的, 原处点我
Recent Comments