工厂创建对象。所以,如果你想建造

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();

真正的优势是当你想改变课堂。假设我们想通过一个不同的班级:

class Factory_New extends Factory{

public function buildC(){

return new ClassD;

}

}

或新的B类:

class Factory_New2 extends Factory{

public function buildB(){

return new ClassE;

}

}

现在,我们可以使用继承轻松地修改类的创建方式,将其放入不同的类集合中。

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

class User{

public $data;

public function __construct($data)

{

$this->data = $data;

}

}

在这个班里

$data

是我们用来存储数据的类。对于这个类,假设我们使用一个会话来存储数据。工厂看起来像这样:

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中的工厂设计模式是什么?相关推荐

  1. java 生成器 设计模式_Java中的生成器设计模式

    java 生成器 设计模式 Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解 ...

  2. java设计模式工厂模式_Java中的工厂设计模式

    java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...

  3. java设计模式工厂模式_Java中的复合设计模式

    java设计模式工厂模式 Composite pattern is one of the Structural design pattern. Composite design pattern is ...

  4. scala设计模式_Scala中的工厂设计模式

    scala设计模式 I'm going to deliver a series of Scala Design Patterns in my coming posts. I will pick-up ...

  5. java设计模式工厂模式_Java中的桥梁设计模式

    java设计模式工厂模式 Today we will look into Bridge Design Pattern in java. When we have interface hierarchi ...

  6. java策略设计模式_Java中的策略设计模式

    java策略设计模式 策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设 ...

  7. java设计模式工厂模式_Java中的外观设计模式

    java设计模式工厂模式 Facade Design Pattern is one of the Structural design patterns (such as Adapter pattern ...

  8. java观察者设计模式_Java中的观察者设计模式

    java观察者设计模式 在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,即依赖于一个特定对象( ...

  9. java 模板方法设计模式_Java中的模板方法设计模式

    java 模板方法设计模式 模板方法是一种行为设计模式 ,用于创建方法存根并将某些实现步骤推迟到子类. 模板方法定义了执行算法的步骤,它可以提供默认实现,该实现对于所有或某些子类可能是通用的. 让我们 ...

最新文章

  1. python jsonpath-rw_Python使用jsonpath-rw模块处理Json对象操作示例
  2. CentOS 7添加开机启动服务/脚本
  3. KaTeX parse error: No such environment: align
  4. ubuntu查看 固态硬盘位置_Linux的硬盘使用情况、挂载、SSD挂载(查看df -h不能看到的卷)...
  5. 中缀表达式——表达式树
  6. Starting Programe
  7. win11使用excel卡顿怎么办 Windows11使用excel卡死的解决方法
  8. 数据结构总结(线性结构,树型结构,图型结构,顺序结构,链式结构)
  9. 大番薯本地模式怎么使用?大番薯u盘启动盘制作工具本地模式重装系统教程
  10. 一个乞丐的故事(强烈推荐)
  11. 总结:K8S之pod配置
  12. 三菱fx2n64mr说明书_FX2N-64MR-001手册三菱FX2N-64MR-001使用说明书 - 广州凌控
  13. iOS直播等开源项目地址收藏
  14. 眼科赛道的“觉醒年代”,清晰医疗赴港能否具备后发优势?
  15. 【每日微信新闻早报简报】10月11日 星期五
  16. win10下的VS2017安装MPI
  17. 洛谷P1719 最大加权矩形
  18. MVC 音乐商店 第 10 部分: 导航和网站设计、 结论的最后更新
  19. oracle子查询引用外表_Oracle子查询(嵌套查询)
  20. Office打开很慢解决办法

热门文章

  1. ngTemplateOutlet递归的问题
  2. osi七层模型tcp/udp
  3. 10-线程,进程,协程,IO多路复用
  4. 又一次的Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)
  5. hdu 3449 有依赖性的01背包
  6. 数据库系列之T-SQL(触发器)
  7. 30、驱动程序调用驱动程序
  8. 百度Logo月度首页人物--王正华:中国低成本航空第一人
  9. hiho #1485 : hiho字符串(滑动窗口)
  10. Linuxshell之高级Shell脚本编程-创建菜单