您的位置:首页 > 编程语言 > PHP开发

PHP中的设计模式-创建型-静态工厂

2018-02-06 16:14 519 查看
说明 :

 本模式与简单工厂模式极为相似. 区别在于,不需要实例化一个工厂对象即可创建产品.

应用场景:

 当创建过程较为简单时, 就使用静态工厂方法.  当创建过程较为复杂时,使用简单工厂方法.

       静态工厂: 静态方法本质上是一个过程化的实现, 当创建过程几句话就能说明白的时候,就可以使用.

      简单工厂:创建过程需要工厂对象大量复杂操作,使用到工厂对象的实例属性及其他实例方法时,就只能使用本模式了. 

代码实现:

 

/**
* 静态工厂示例
* User: 蓝冰大侠
*/
class CStaticFactory extends SController
{
public function index()
{
//使用工厂创建产品X
$product = Factory::createProduct('x');
$product->methodA();
$product->methodB();

//使用工厂创建产品Y
$product = Factory::createProduct('y');
$product->methodA();
$product->methodB();
}
}

//所有产品的基类
abstract class Product
{
//每个产品都必须实现以下方法
abstract public function methodA();

abstract public function methodB();
}

//定义产品类X
class ProductX extends Product
{
public function methodA()
{
echo 'product x do A.';
}

public function methodB()
{
echo 'product X do B.';
}
}

//定义 产品类Y
class ProductY extends Product
{
public function methodA()
{
echo 'product Y do A';
}

public function methodB()
{
echo 'product Y do B';
}
}

//定义静态工厂类
class Factory
{
//根据参数的不同创建不同的产品
static public function createProduct($type): Product
{
if ($type == 'x') {
return new ProductX();
}
if ($type == 'y') {
return new ProductY();
}
throw new Exception('Unknown product type.');
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: