php的工厂设计模式,PHP中的工厂设计模式是什么?
工厂创建对象。所以,如果你想建造
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中的工厂设计模式是什么?相关推荐
- java 生成器 设计模式_Java中的生成器设计模式
java 生成器 设计模式 Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解 ...
- java设计模式工厂模式_Java中的工厂设计模式
java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...
- java设计模式工厂模式_Java中的复合设计模式
java设计模式工厂模式 Composite pattern is one of the Structural design pattern. Composite design pattern is ...
- scala设计模式_Scala中的工厂设计模式
scala设计模式 I'm going to deliver a series of Scala Design Patterns in my coming posts. I will pick-up ...
- java设计模式工厂模式_Java中的桥梁设计模式
java设计模式工厂模式 Today we will look into Bridge Design Pattern in java. When we have interface hierarchi ...
- java策略设计模式_Java中的策略设计模式
java策略设计模式 策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设 ...
- java设计模式工厂模式_Java中的外观设计模式
java设计模式工厂模式 Facade Design Pattern is one of the Structural design patterns (such as Adapter pattern ...
- java观察者设计模式_Java中的观察者设计模式
java观察者设计模式 在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,即依赖于一个特定对象( ...
- java 模板方法设计模式_Java中的模板方法设计模式
java 模板方法设计模式 模板方法是一种行为设计模式 ,用于创建方法存根并将某些实现步骤推迟到子类. 模板方法定义了执行算法的步骤,它可以提供默认实现,该实现对于所有或某些子类可能是通用的. 让我们 ...
最新文章
- python jsonpath-rw_Python使用jsonpath-rw模块处理Json对象操作示例
- CentOS 7添加开机启动服务/脚本
- KaTeX parse error: No such environment: align
- ubuntu查看 固态硬盘位置_Linux的硬盘使用情况、挂载、SSD挂载(查看df -h不能看到的卷)...
- 中缀表达式——表达式树
- Starting Programe
- win11使用excel卡顿怎么办 Windows11使用excel卡死的解决方法
- 数据结构总结(线性结构,树型结构,图型结构,顺序结构,链式结构)
- 大番薯本地模式怎么使用?大番薯u盘启动盘制作工具本地模式重装系统教程
- 一个乞丐的故事(强烈推荐)
- 总结:K8S之pod配置
- 三菱fx2n64mr说明书_FX2N-64MR-001手册三菱FX2N-64MR-001使用说明书 - 广州凌控
- iOS直播等开源项目地址收藏
- 眼科赛道的“觉醒年代”,清晰医疗赴港能否具备后发优势?
- 【每日微信新闻早报简报】10月11日 星期五
- win10下的VS2017安装MPI
- 洛谷P1719 最大加权矩形
- MVC 音乐商店 第 10 部分: 导航和网站设计、 结论的最后更新
- oracle子查询引用外表_Oracle子查询(嵌套查询)
- Office打开很慢解决办法
热门文章
- ngTemplateOutlet递归的问题
- osi七层模型tcp/udp
- 10-线程,进程,协程,IO多路复用
- 又一次的Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)
- hdu 3449 有依赖性的01背包
- 数据库系列之T-SQL(触发器)
- 30、驱动程序调用驱动程序
- 百度Logo月度首页人物--王正华:中国低成本航空第一人
- hiho #1485 : hiho字符串(滑动窗口)
- Linuxshell之高级Shell脚本编程-创建菜单