当前位置: 首页 > 图文教程 > 网络编程 > PHP > php 设计模式之 单例模式

PHP
在PHP中以root身份运行外部命令
PHP编程常用技巧四则
实例学习PHP之投票程序篇
PHP中的加密功能
PHP VS ASP
PHP生成动态WAP页面
PHP中for循环语句的几种变型
PHP5.0对象模型探索之对象串行化
PHP5.0对象模型探索之重载
浅议PHP程序开发中的模板选择
用PHP写的身份证验证程序
PHP.MVC的模板标签系统之初识PHP.MVC
PHP程序加速探索之代码优化
PHP程序加速探索之压缩输出gzip
用PHP文件上传的具体思路及实现
使用PHP编写基于Web的文件管理系统
理解PHP中的MVC编程之控制器
PHP程序加速探索之缓存输出
让你的PHP引擎全速运转的三个绝招
PHP程序加速探索之加速工具软件

PHP 中的 php 设计模式之 单例模式


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 70 ::
收藏到网摘: n/a

其实在工厂模式就已经应用了单例模式,从始到终它就只有一个工厂,单例模式不需要新建实例。现在写一个简单的例子。 小船类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;
}
/**
* 设置船长
*
* @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;
}
}
?>

现在看看怎么样上客
复制代码 代码如下:

<?php
include 'boat.php';
echo "从前有一条河,河里只有一条船,<br>";
$boat1=boat::getInstance();//因为只有一条船,所以只有一个实例
echo "现在张三要到河东去,";
$boat1->load('张三');
echo "<br>现在船上坐着:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'<br>';
}
echo "<br>现在李四也要过河东去<br>";
$boat1->load('李四');
echo "现在船上坐着:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'、';
}
echo "<br><br>王五以为这条河有另一条船,<br>";
$boat2=boat::getInstance();
echo "他现在上船<br>";
$boat2->load('王五');
echo "现在船上坐着:<br>";
foreach ($boat1->whoInboat() as $who){
echo $who.'、';
}
?>