php 設(shè)計(jì)模式之 單例模式
更新時(shí)間:2008年12月19日 12:48:53 作者:
其實(shí)在工廠(chǎng)模式就已經(jīng)應(yīng)用了單例模式,從始到終它就只有一個(gè)工廠(chǎng),單例模式不需要新建實(shí)例?,F(xiàn)在寫(xiě)一個(gè)簡(jiǎn)單的例子。
小船類(lèi)boat.php
<?php
class boat {
private static $instance=null;
private $skipper;
private $personNum=0;
private $passengers=array();
private function __construct() {
}
public static function getInstance(){
if (self::$instance==null){
self::$instance=new boat();
}
return self::$instance;
}
/**
* 設(shè)置船長(zhǎng)
*
* @param unknown_type $name
*/
public function setSkipper($name){
$this->skipper=$name;
}
/**
* 裝人
*
* @param unknown_type $person
*/
public function load($person){
if (!emptyempty($person) and $this->personNum<=5){
array_push($this->passengers,$person);
$this->personNum=$this->personNum+1;
}
if ($this->personNum>5) {
echo 'this boat only load 5 person!';
}
}
/**
* 船上裝了什么人
*
* @return unknown
*/
public function whoInBoat(){
return $this->passengers;
}
}
?>
現(xiàn)在看看怎么樣上客
<?php
include 'boat.php';
echo "從前有一條河,河里只有一條船,<br>";
$boat1=boat::getInstance();//因?yàn)橹挥幸粭l船,所以只有一個(gè)實(shí)例
echo "現(xiàn)在張三要到河?xùn)|去,";
$boat1->load('張三');
echo "<br>現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'<br>';
}
echo "<br>現(xiàn)在李四也要過(guò)河?xùn)|去<br>";
$boat1->load('李四');
echo "現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'、';
}
echo "<br><br>王五以為這條河有另一條船,<br>";
$boat2=boat::getInstance();
echo "他現(xiàn)在上船<br>";
$boat2->load('王五');
echo "現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'、';
}
?>
復(fù)制代碼 代碼如下:
<?php
class boat {
private static $instance=null;
private $skipper;
private $personNum=0;
private $passengers=array();
private function __construct() {
}
public static function getInstance(){
if (self::$instance==null){
self::$instance=new boat();
}
return self::$instance;
}
/**
* 設(shè)置船長(zhǎng)
*
* @param unknown_type $name
*/
public function setSkipper($name){
$this->skipper=$name;
}
/**
* 裝人
*
* @param unknown_type $person
*/
public function load($person){
if (!emptyempty($person) and $this->personNum<=5){
array_push($this->passengers,$person);
$this->personNum=$this->personNum+1;
}
if ($this->personNum>5) {
echo 'this boat only load 5 person!';
}
}
/**
* 船上裝了什么人
*
* @return unknown
*/
public function whoInBoat(){
return $this->passengers;
}
}
?>
現(xiàn)在看看怎么樣上客
復(fù)制代碼 代碼如下:
<?php
include 'boat.php';
echo "從前有一條河,河里只有一條船,<br>";
$boat1=boat::getInstance();//因?yàn)橹挥幸粭l船,所以只有一個(gè)實(shí)例
echo "現(xiàn)在張三要到河?xùn)|去,";
$boat1->load('張三');
echo "<br>現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'<br>';
}
echo "<br>現(xiàn)在李四也要過(guò)河?xùn)|去<br>";
$boat1->load('李四');
echo "現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'、';
}
echo "<br><br>王五以為這條河有另一條船,<br>";
$boat2=boat::getInstance();
echo "他現(xiàn)在上船<br>";
$boat2->load('王五');
echo "現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'、';
}
?>
您可能感興趣的文章:
- PHP實(shí)現(xiàn)單例模式最安全的做法
- 雞肋的PHP單例模式應(yīng)用詳解
- php單例模式實(shí)現(xiàn)(對(duì)象只被創(chuàng)建一次)
- php利用單例模式實(shí)現(xiàn)日志處理類(lèi)庫(kù)
- PHP基于單例模式編寫(xiě)PDO類(lèi)的方法
- php基于單例模式封裝mysql類(lèi)完整實(shí)例
- PHP基于單例模式實(shí)現(xiàn)的mysql類(lèi)
- PHP設(shè)計(jì)模式之工廠(chǎng)模式與單例模式
- PHP單例模式應(yīng)用示例【多次連接數(shù)據(jù)庫(kù)只實(shí)例化一次】
相關(guān)文章
PHP 將圖片按創(chuàng)建時(shí)間進(jìn)行分類(lèi)存儲(chǔ)的實(shí)現(xiàn)代碼
代碼功能:使用PHP巧妙將圖片按創(chuàng)建時(shí)間進(jìn)行分類(lèi)存儲(chǔ) 圖片文件屬性須取消只讀屬性,否則無(wú)法刪除2010-01-01
PHP編程之微信公眾平臺(tái)企業(yè)號(hào)驗(yàn)證接口示例【回調(diào)操作】
這篇文章主要介紹了PHP編程之微信公眾平臺(tái)企業(yè)號(hào)驗(yàn)證接口,是通過(guò)回調(diào)操作實(shí)現(xiàn)的企業(yè)號(hào)驗(yàn)證功能接口,需要的朋友可以參考下2017-08-08
php 的加密函數(shù) md5,crypt,base64_encode 等使用介紹
php 在做注冊(cè)、登錄或是url 傳遞參數(shù)時(shí)都會(huì)用到 字符變量的加密,下面我們就來(lái)簡(jiǎn)單的介紹下:php 自帶的加密函數(shù)2012-04-04
PHP實(shí)現(xiàn)查詢(xún)兩個(gè)數(shù)組中不同元素的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)查詢(xún)兩個(gè)數(shù)組中不同元素的方法,涉及PHP數(shù)組差集運(yùn)算與數(shù)組合并的相關(guān)技巧,需要的朋友可以參考下2016-02-02
php下載文件超時(shí)時(shí)間的設(shè)置方法
這篇文章W主要介紹了php下載文件超時(shí)時(shí)間的設(shè)置方法2016-10-10
Zend Framework上傳文件重命名的實(shí)現(xiàn)方法
這篇文章主要介紹了Zend Framework上傳文件重命名的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Zend Framework上傳文件重命名的具體操作步驟與配置、檢測(cè)、重命名操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-11-11

