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

真正的优势是当你想改变类。假设我们想传递一个不同的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();

}

}

工厂是我们用来控制我们如何将对象放在一起的设计模式,使用正确的工厂模式允许我们创建我们需要的定制对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值