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

说明 :

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

应用场景:

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

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

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

代码实现:

 


/**
 * 静态工厂示例
 * 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.');
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值