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

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值