设计模式:简单工厂和单例工厂

 1 <?php
 2 /**
 3  *  纯粹工厂类
 4  */
 5 /*class Factory {
 6     public static function getOBJ($class_name) {
 7         include_once './'.$class_name.'.class.php';
 8         return new $class_name; //可变类
 9     }
10 }
11 */
12 
13 /**
14  *  单例工厂类
15  */
16 class Factory {
17     /*
18      生产单例对象
19      @param string $class_name 获得对象所需要的类名
20      @param object 单例对象
21     */
22      public static function getOBJ($class_name) {
23          //键 => 值
24          // 类名 => 该类已经实例化了的对象
25          static $obj_list = array();
26          // 判断当前的类有没有被实例化
27          if (!isset($obj_list[$class_name])) {
28              //说明没有被实例化,所以需要实例化
29              include_once './'.$class_name.'.class.php';
30              $obj_list[$class_name] = new $class_name;
31          }
32          return $obj_list[$class_name];
33      }
34 }

调用方法:

 1 include './Factory.class.php';
 2 $stu1 = Factory::getOBJ('Student');
 3 $stu2 = Factory::getOBJ('Student');
 4     echo "<pre>";
 5     var_dump($stu1);
 6     echo "</pre>";
 7     echo "<hr>";
 8 
 9     echo "<pre>";
10     var_dump($stu2);
11     echo "</pre>";
12     echo "<hr>";

 

Student.class.php

1 <?php
2 class Student{
3     public function __construct(){
4         echo "我是个小学生";
5     }
6 }

 

 

 

工厂模式

概念

也是一种设计模式!

工厂模式的含义就是:设计一个类(此时这个类就叫做“工厂类”),该类的作用就是帮助其他的类“生产”对象!

简单工厂

纯粹工厂

以上代码

单例工厂

也是一种单例的实现,但不是“三私一公”的实现,而是在生产对象的工厂类中实现单例效果!

posted @ 2017-09-22 21:44  QinXiao.Shou  阅读(363)  评论(0编辑  收藏  举报