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一个新对象出来,这样造成很大的开支和浪费,单例模式保证我们程序运行过程中对象产生一次,节省了开支。

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

时间: 2024-12-13 11:15:57

PHP工厂模式和单例模式的相关文章

工厂模式,单例模式

工厂模式: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ConsoleApplication1{ 设计模式:工厂模式,单例模式 <大话设计模式> 计算器 class JiSuanQi { private int a; public int A { get { return a; } set { a

PHP 设计模式 笔记与总结(6)基础设计模式:工厂模式、单例模式和注册树模式

三种基础设计模式(所有面向对象设计模式中最常见的三种): ① 工厂模式:使用工厂方法或者类生成对象,而不是在代码中直接new 在 Common 目录下新建 Factory.php: <?php namespace Common; class Factory{ static function createDatabase(){ //$db = new \Common\Database; $db = new Database; return $db; } } index.php: <?php de

C#基础之简单工厂模式和单例模式

设计模式(Design pattern):指的是一种大多数人反复使用的代码设计经验. 作用:代码复用.易读性.保证代码可靠性. 一.简单工厂模式 用法:创建一个工厂类(命名习惯以Factiory结尾),一个静态的带参数(根据不同的参数返回不同的子类对象)的父类类型的方法. public class FunctionFactory { public static FatherClass Function(string str) { FatherClass fc = null; ... return

javascript工厂模式、单例模式

//工厂模式 function createObject(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.fun = function(){ return this.name + this.age +"一个方法"; } return obj; } var box1 = createObject("box1",1); var box2 = createObject("

创建型模式 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

说起模式来大家都很头疼.大篇的介绍和概念,还有类图.. 一 简单工厂模式不属于23中涉及模式,简单工厂一般分为:普通简单工厂.多方法简单工厂.静态方法简单工厂. 简单工厂模式:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.它又称为静态工厂方法模式,属于类的创建型模式. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 普通简单工厂  多方法简单工厂 静态方法简单工厂 class SimpleFacto

PHP设计模式笔记三:三种基本设计模式(工厂模式、单例模式、注册树模式) -- Rango韩老师 http://www.imooc.com/learn/236

一.工厂设计模式 index.php $db = IMooc\Factory::createDatabase(); 使用工厂类的静态方法直接创建一个dababase对象,当类名发生修改时,在工厂里修改即可. IMooc/Factory.php 二.单例设计模式 保证在整个脚本运行期间,只有一个对象的实例,比如数据库操纵对象 Database.php Factory.php index.php output同一个对象: object(IMooc\Database)#1 (0) { } object

(一)Python入门-6面向对象编程:12设计模式之工厂模式-单例模式

一:工厂模式实现 设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计 模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式. 工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类.创建对象进 行统一的管理和控制. [操作] #工厂模式实现 class CarFactory: def creatCar(self,brand): if brand == '奔驰': return Benz() elif brand == '宝马': re

设计模式——介绍与工厂模式(扁平管理模式VS职业经理人模式)

本文主要对设计模式进行大概解说.特别是对工厂模式进行简明的解析: 一.设计模式的分类 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.訪问者模式.中介者模式.解释器模式. 事实上还有两类:并发型模式和线程池模式. 二.设计模式的六大原则 1.开闭原则(Op

设计模式之一(简单工厂模式)

简单工厂模式 说先说一下我们熟悉的23中设计模式划分: 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 其实还有两类:并发型模式和线程池模式. 今天只要是针对简单工厂模式给大家讲解一下.直