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

PHP中的设计模式-创建型-工厂方法模式

2018-02-06 16:52 417 查看
说明:

 工厂方法模式, 简单工厂模式, 静态工厂模式  这三者 都是 抽象工厂模式的简化版本, 单独针对某一方面

 本模式重点表述, 具体的工厂使用不同的方式 来生产产品

实现代码:

<?php

/**
* 工厂方法模式示例
* User: 蓝冰大侠
*/
class CFactoryMethod extends SController
{
public function index()
{
//通过A工厂生成产品
$factory=new FactoryA();
$obj=$factory->create('Product');
var_dump($obj); //object(ProductX)#9 (1) { ["name":protected]=> string(9) "A-Product" }

//通过B工厂生成产品
$factory=new FactoryB();
$obj=$factory->create('Product');
var_dump($obj); //object(ProductX)#8 (1) { ["name":protected]=> string(9) "B-Product" }
}
}

//定义产品基类(抽象)
abstract class Product
{
protected $name;

public function __construct(string $name)
{
$this->name = $name;
}
}

//定义工厂基类(抽象),工厂可以生成产品
abstract class AbstractFactory
{
//具体工厂子类必须实现,但不对外
abstract protected function createProduct(string $name): Product;

//对外提供创建产品的方法
public function create(string $name){
return $this->createProduct($name);
}
}

//定义X产品,也可根据需要,定义 Y,Z产品
class ProductX extends Product
{
//X产品的具体实现细节
}

//定义工厂A
class FactoryA extends AbstractFactory
{
protected function createProduct(string $name): Product
{
return new ProductX('A-'.$name);
}
}

//定义工厂B
class FactoryB extends AbstractFactory
{
protected function createProduct(string $name): Product
{
return new ProductX('B-'.$name);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: