Chinaunix首页 | 论坛 | 博客
  • 博客访问: 176052
  • 博文数量: 49
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 337
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-23 15:51
文章分类

全部博文(49)

文章存档

2014年(23)

2013年(26)

我的朋友

分类: PHP

2014-03-02 21:29:07

在就已经应用了( ),从始到终它就只有一个工厂,单例模式不需要新建实例。
现在写一个简单的例子。


小船类boat.php

  1. <?php
  2. class boat {
  3. private static $instance=null;
  4. private $skipper;
  5. private $personNum=0;
  6. private $passengers=array();
  7. private function __construct() {
  8. }
  9. public static function getInstance(){
  10. if (self::$instance==null){
  11. self::$instance=new boat();
  12. }
  13. return self::$instance;
  14. }
  15. /**
  16. * 设置船长
  17. *
  18. * @param unknown_type $name
  19. */
  20. public function setSkipper($name){
  21. $this->skipper=$name;
  22. }
  23. /**
  24. * 装人
  25. *
  26. * @param unknown_type $person
  27. */
  28. public function load($person){
  29. if (!emptyempty($person) and $this->personNum<=5){
  30. array_push($this->passengers,$person);
  31. $this->personNum=$this->personNum+1;
  32. }
  33. if ($this->personNum>5) {
  34. echo 'this boat only load 5 person!';
  35. } //
  36. }
  37. /**
  38. * 船上装了什么人
  39. *
  40. * @return unknown
  41. */
  42. public function whoInBoat(){
  43. return $this->passengers;
  44. }
  45. }
  46. ?>
现在看看怎么样上客

  1. <?php
  2. include 'boat.php';
  3. echo "从前有一条河,河里只有一条船,
    "
    ;
  4. $boat1=boat::getInstance();//因为只有一条船,所以只有一个实例
  5. echo "现在张三要到河东去,";
  6. $boat1->load('张三');
  7. echo "
    现在船上坐着:
    "
    ;
  8. foreach ($boat1->whoInboat() as $who){
  9. echo $who.'
    '
    ;
  10. }
  11. echo "
    现在李四也要过河东去
    "
    ;
  12. $boat1->load('李四');
  13. echo "现在船上坐着:
    "
    ;
  14. foreach ($boat1->whoInboat() as $who){
  15. echo $who.'、';
  16. }
  17. echo "

    王五以为这条河有另一条船,
    "
    ;
  18. $boat2=boat::getInstance();
  19. echo "他现在上船
    "
    ;
  20. $boat2->load('王五');
  21. echo "现在船上坐着:
    "
    ;
  22. foreach ($boat1->whoInboat() as $who){
  23. echo $who.'、';
  24. }
  25. ?>
阅读(1063) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~