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

Posted QinXiao.Shou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式:简单工厂和单例工厂相关的知识,希望对你有一定的参考价值。

 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 }

 

 

 

工厂模式

概念

也是一种设计模式!

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

简单工厂

纯粹工厂

以上代码

单例工厂

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

以上是关于设计模式:简单工厂和单例工厂的主要内容,如果未能解决你的问题,请参考以下文章

C#中的简单工厂和单例

PHP设计模式之工厂模式

工厂模式和单例模式

PHP工厂模式和单例模式

2022-04-04:k8s中kubectl源码用到了哪些设计模式?除了工厂和单例。

scala 基础十二 scala apply的使用,工厂方法和单例模式的实现