php 設(shè)計模式之 單例模式
更新時間:2008年12月19日 12:48:53 作者:
其實在工廠模式就已經(jīng)應(yīng)用了單例模式,從始到終它就只有一個工廠,單例模式不需要新建實例?,F(xiàn)在寫一個簡單的例子。
小船類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è)置船長
*
* @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();//因為只有一條船,所以只有一個實例
echo "現(xiàn)在張三要到河?xùn)|去,";
$boat1->load('張三');
echo "<br>現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'<br>';
}
echo "<br>現(xiàn)在李四也要過河?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è)置船長
*
* @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();//因為只有一條船,所以只有一個實例
echo "現(xiàn)在張三要到河?xùn)|去,";
$boat1->load('張三');
echo "<br>現(xiàn)在船上坐著:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'<br>';
}
echo "<br>現(xiàn)在李四也要過河?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.'、';
}
?>
相關(guān)文章
PHP 將圖片按創(chuàng)建時間進行分類存儲的實現(xiàn)代碼
代碼功能:使用PHP巧妙將圖片按創(chuàng)建時間進行分類存儲 圖片文件屬性須取消只讀屬性,否則無法刪除2010-01-01
PHP編程之微信公眾平臺企業(yè)號驗證接口示例【回調(diào)操作】
這篇文章主要介紹了PHP編程之微信公眾平臺企業(yè)號驗證接口,是通過回調(diào)操作實現(xiàn)的企業(yè)號驗證功能接口,需要的朋友可以參考下2017-08-08
php 的加密函數(shù) md5,crypt,base64_encode 等使用介紹
php 在做注冊、登錄或是url 傳遞參數(shù)時都會用到 字符變量的加密,下面我們就來簡單的介紹下:php 自帶的加密函數(shù)2012-04-04
PHP實現(xiàn)查詢兩個數(shù)組中不同元素的方法
這篇文章主要介紹了PHP實現(xiàn)查詢兩個數(shù)組中不同元素的方法,涉及PHP數(shù)組差集運算與數(shù)組合并的相關(guān)技巧,需要的朋友可以參考下2016-02-02
Zend Framework上傳文件重命名的實現(xiàn)方法
這篇文章主要介紹了Zend Framework上傳文件重命名的實現(xiàn)方法,結(jié)合實例形式分析了Zend Framework上傳文件重命名的具體操作步驟與配置、檢測、重命名操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2016-11-11

