PHP设计模式专题(一)抽象工厂


工厂是常见的设计模式的一种,通过工厂来产生类,降低系统的耦合度,从而提高开发的效率。

今天介绍的抽象工厂就是工厂模式的衍生。将工厂进行抽象,从而提高代码的灵活度。

比如我们需要一个工厂来制造自行车和汽车,如果是工厂模式的话,我们需要创建两个工厂,一个是汽车工厂,一个是自行车工厂。

class bikefactory
{
//生产自行车
}
class carfactory{
//生产汽车
}

那么我们在生产不同车辆的时候,就要初始化不同的类

createbike(bikefactory factory)
{    
facotry->make();
}
createcar(carfactory factory)
{   
factory->make();
}


其实我们可以看的出来,两个函数基本上是一致的,但是我们却需要写两个不同的函数来制造汽车和自行车。


为了避免这种不必要的重复,抽象工厂出现了。生产汽车和自行车都是生产车,可能生产工艺不一样,那我们先不管。

我们先来写一个车的工厂,不管你是汽车还是自行车。

<?php
/**
 * Created by PhpStorm.
 * User: xiaozhen
 * Date: 2017/3/30
 * Time: 11:50
 */
//抽象工厂
namespace App\Designer;
use App\Designer;
abstract class Factory
{
    //定义一个抽象方法,等待具体的类来实现
    abstract public function make();
}
class CarFactory extends Factory
{
    //实现make方法
    public function make()
    {
        return new Car();
    }
}
class BikeFactory extends Factory
{
    public function make()
    {
        // TODO: Implement make() method.
        return new Bike();
    }
}
class Car
{
    public function __construct()
    {
        echo "我是一辆汽车";
    }

}
class Bike
{
    public function __construct()
    {
        echo "我是一辆自行车";
    }
}
class testunit
{
    static public function make(Factory $factory)
    {
        $factory->make();
    }
}
testunit::make(new CarFactory());







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值