PHP工厂模式和单例模式

Posted

tags:

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

首先准备文件结构大概是下面这个样子:

技术分享

Object.php文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Administrator
 5  * Date: 2016/3/10
 6  * Time: 11:57
 7  */
 8 
 9 namespace Factory;
10 
11 
12 class Object {
13 
14 
15     private static $instance;
16 
17     /**
18      * 单例模式
19      */
20 
21     private function __construct(){
22 
23     }
24 
25     public static function getInstance(){
26 
27         if(self::$instance){
28 
29             return self::$instance;
30         }
31         self::$instance = new self();
32 
33         return self::$instance;
34     }
35 
36 
37     public  function say(){
38 
39 
40         echo __METHOD__;
41 
42     }
43 
44 }

 

ObjectFactory.php文件: 

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Administrator
 5  * Date: 2016/3/10
 6  * Time: 11:56
 7  */
 8 
 9 namespace Factory;
10 
11 
12 class ObjectFactory {
13 
14     /**
15      * 工厂模式
16      */
17 
18     public static function createObject(){
19 
20 
21         $obj = Object::getInstance();
22 
23         
24       return $obj;
25     }
26 
27 }

index.php文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Administrator
 5  * Date: 2016/3/10
 6  * Time: 11:55
 7  */
 8 
 9   define(‘ROOT‘,__DIR__);
10 
11   require ‘autoload.php‘;
12 
13   $obj =  Factory\ObjectFactory::createObject();
14 
15   $obj->say();

 

工厂模式的好处就是我们创建对象的方法是统一的,不是在我们需要的地方直接使用new进行创建,降低了模块之间的耦合度,并且当我们修改了类的名称我们只需要在工厂类里面修改一处即可完成。

 

单例模式好处是我们使用对象的时候不是每次使用都去new一个新对象出来,这样造成很大的开支和浪费,单例模式保证我们程序运行过程中对象产生一次,节省了开支。

 

两种通常模式都是放在一起使用的。

 

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

PHP设计模式之工厂模式

面向对象编程模式之“简单工厂和单例“

工厂模式和单例模式

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

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

双重检查锁定和单例模式