当前位置: 首页 > 面试题库 >

PHP中的工厂设计模式是什么?

符功
2023-03-14
问题内容

用最简单的术语来说,这使我感到困惑。假装您几乎在向母亲或某人解释。


问题答案:

工厂创建一个对象。所以,如果你想建立

 class A{
    public $classb;
    public $classc;
    public function __construct($classb, $classc)
    {
         $this->classb = $classb;
         $this->classc = $classc;
    }
  }

每次创建对象时,您都不必依赖执行以下代码

$obj = new ClassA(new ClassB, new Class C);

那就是工厂的所在地。我们定义了一个工厂来为我们照顾:

class Factory{
    public function build()
    {
        $classc = $this->buildC();
        $classb = $this->buildB();
        return $this->buildA($classb, $classc);

    }

    public function buildA($classb, $classc)
    {
        return new ClassA($classb, $classc);
    }

    public function buildB()
    {
        return new ClassB;
    }

    public function buildC()
    {
        return new ClassC;
    }
}

现在我们要做的就是

$factory = new Factory;
$obj     = $factory->build();

真正的优势在于您想更改班级。可以说我们想传入另一个ClassC:

class Factory_New extends Factory{
    public function buildC(){
        return new ClassD;
    }
}

或新的ClassB:

class Factory_New2 extends Factory{
    public function buildB(){
        return new ClassE;
    }
}

现在,我们可以使用继承来轻松修改类的创建方式,以放置不同的类集。

这个用户类可能是一个很好的例子:

class User{
    public $data;
    public function __construct($data)
    {
        $this->data = $data;
    }
}

在该类中$data是用于存储数据的类。现在,对于这个类,可以说我们使用Session来存储数据。工厂看起来像这样:

class Factory{
    public function build()
    {
        $data = $this->buildData();
        return $this->buildUser($data);
    }

    public function buildData()
    {
        return SessionObject();
    }

    public function buildUser($data)
    {
        return User($data);
    }
}

现在,让我们说我们想将所有数据存储在数据库中,更改它真的很简单:

class Factory_New extends Factory{
    public function buildData()
    {
        return DatabaseObject();
    }
}

工厂是一种设计模式,我们可以用来控制如何将对象组合在一起,而使用正确的工厂模式可以使我们创建所需的定制对象。



 类似资料:
  • 本文向大家介绍PHP设计模式之工厂模式详解,包括了PHP设计模式之工厂模式详解的使用技巧和注意事项,需要的朋友参考一下 在开发大型系统时,往往会出现这样一种情况: 我有一部分基础数据,是类classA是从数据库A读取出来的,其他很多的功能都是基于这个基础数据来操作的。现在呢,我想把数据从数据库A变成从另外的数据源去获取,这时候,要修改起来就比较麻烦,要修改其他很多类的代码。这种设计显然是不够灵活的

  • 介绍 与创建型模式类似,工厂模式创建对象(视为工厂里的产品)时无需指定创建对象的具体类。 工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。 这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的对象类型

  • 本文向大家介绍学习php设计模式 php实现工厂模式(factory),包括了学习php设计模式 php实现工厂模式(factory)的使用技巧和注意事项,需要的朋友参考一下 一、意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使用一个类的实例化延迟到其子类【GOF95】 二、工厂模式结构图 三、工厂模式中主要角色 抽象产品(Product)角色:具体产品对

  • 本文向大家介绍PHP设计模式之工厂模式与单例模式,包括了PHP设计模式之工厂模式与单例模式的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP设计模式之工厂模式与单例模式实现方法。分享给大家供大家参考,具体如下: 设计模式简单说应对某类问题而设计的解决方式 工厂模式:应对需求创建相应的对象 单例模式:只创建一个对象的实例,不允许再创建实例,节约资源(例如数据库的连接) 运行结果如下: 应

  • 我是设计模式领域的新手,我正在尝试了解其中的诀窍。我曾多次听到人们使用的“工厂”或“工厂模式”,但当我开始学习设计模式(目前我正在读GoF的书)时,我了解到实际上并不存在“工厂设计模式”这样的东西。GoF这本书描述了两种与工厂相关的模式:“抽象工厂”和“工厂方法”。 所以我的问题是这样的--当人们只说“工厂”(没有添加任何其他东西)时,他们实际上指的是哪种设计模式? 我找到了两个关于这件事的消息来

  • 本文向大家介绍PHP设计模式之工厂模式(Factory Pattern)的讲解,包括了PHP设计模式之工厂模式(Factory Pattern)的讲解的使用技巧和注意事项,需要的朋友参考一下 面向对象编程中,工厂模式是我们最常用的实例化对象模式,工厂类就是一个专门用来创建其它对象的类,工厂类在多态性编程实践中是非常重要的。它允许动态替换类,修改配置,会使应用程序更加灵活。掌握工厂模式对Web开发是