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

PHP设计模式之-----高级工厂模式

2017-09-22 11:29 495 查看
<?php
/*
* PHP设计模式 工厂模式 (创建型)
* 一个工厂制造多种商品
* */

/**
* Interface Product 定义一个获取制造出来的产品的接口
*/
interface Product
{
public function getProperties();
}

/**
* Class Creator
*
* @describe 定义一个创造产品的抽象类
*
* @author   nick
*
*/
abstract class Creator
{
// 接受所有实现Product接口的类
protected abstract function factoryMethod( Product $product );

public function doFactory( $productNow )
{
$countryProduct = $productNow; // 不同产品类的实例
$mfg            = $this->factoryMethod($countryProduct);
return $mfg;
}
}

/**
* Class countryFactory
*
* @describe 具体的创建产品的工厂类
*
* @author   nick
*
*/
class CountryFactory extends Creator
{
private $country;
// 需要传入要制造的产品的实例
protected function factoryMethod( Product $product )
{
$this->country = $product;
// 返回制造出来是具体产品
return $this->country->getProperties();
}
}

/**
* Class SomeProduct
*
* @describe SomeProduct产品类
*
* @author   nick
*
*/
class SomeProduct implements Product
{
// 实现一些制造产品的逻辑
private $mfgProduct;

public function getProperties()
{
$this->mfgProduct = '我是SomeProduct产品' . '<br>';

return $this->mfgProduct;
}

}

/**
* Class TextProduct
*
* @describe TextProduct产品类
*
* @author   nick
*
*/
class TextProduct implements Product
{
// 实现一些制造产品的逻辑
private $mfgProduct;

public function getProperties()
{
$this->mfgProduct = '我是TextProduct产品' . '<br>';

return $this->mfgProduct;
}

}

/**
* Class Client
*
* @describe 最后用户要那个产品就给那个产品
*
* @author   nick
*
*/
class Client
{
private $countryFactory;

public function __construct()
{
$this->countryFactory = new CountryFactory();
echo $this->countryFactory->doFactory(new TextProduct());
}
}

$a = new Client();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式