PHP plant
2023-04-18 16:16:23 时间
顾名思义,工厂是可以加工零件的,PHP程序中的工厂模式也有相同的功能,可以方便的使用一个静态的工厂方法来实例化某一个类,那么这样做的好处是什么呢?初学PHP的设计模式,实例化一个类会给它一些参数以便在其构析的时候可以根据不同的参数反馈出我们需要的结果。
举例说明,以下是一个User类,非常简单:
/**
* factory pattern 工厂模式
*/
interface abstracted
{
public function realCreate();
}
//女人类
class Woman
{
public function action()
{
echo '这是女人';
}
}
//男人类
class Man
{
public function action()
{
echo '这是男人';
}
}
//创建女人
class WomanCreator implements abstracted
{
public $chromosome;//染色体
public function realCreate(){
if ($this->chromosome == "xx")
{
return new Woman();
}
}
}
//创建男人
class ManCreator implements abstracted
{
public $chromosome;
public function realCreate(){
if ($this->chromosome == "xy" || $this->chromosome == "xyy")
{
return new Man();
}
}
}
//人类工厂
class PersonFactory
{
public function create($what)
{
$create = $what."Creator"; //womanCreator
return new $create();
}
}
$create = new PersonFactory();
$instance = $create->create('woman');
$instance->chromosome = "xx";
$instance->realCreate()->action();
?>
相关文章
- 小师妹学JavaIO之:文件读取那些事
- JDK9的新特性:JPMS模块化
- 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
- JDK9的新特性:String压缩和字符编码
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
- Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
- JDK10的新特性:var和匿名类
- 小师妹学JavaIO之:File文件系统
- JDK10的新特性:var泛型和多个接口实现
- 复杂嵌套循环,利用外环可变逐渐缩小了一半每次迭代
- 确定类别的内容挖掘的算法
- JDK11的新特性:HTTP API和reactive streams
- 使用eclipse创建一个Nutch插件
- 什么?注释里面的代码居然能够执行
- 在Eclipse的项目目录之外包含C++文件
- 搜索Eclipse本地历史记录
- 响应式系统reactive system初探
- JDK12的新特性:CompactNumberFormat
- Eclipse UI测试在Redhat Jenkins服务器上使用gtk_init_check()失败
- JDK12的新特性:teeing collectors