<?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();
PHP设计模式之-----高级工厂模式
最新推荐文章于 2024-04-19 23:38:23 发布
本文介绍PHP设计模式中的工厂模式,并通过实例演示如何在一个工厂中制造多种产品。文章详细解释了接口、抽象类及其实现的具体类,展示了客户端如何请求特定类型的产品。
607

被折叠的 条评论
为什么被折叠?



