抽象工厂

<?php
/**
 * 抽象工厂模式
 */

/************************ 鼠标 *************************/

interface Mouse
{
    public function make();
}

//戴尔鼠标
class DellMouse implements Mouse
{
    public function make()
    {
        echo "Dell mouse\n";
    }
}

//惠普鼠标
class HpMouse implements Mouse
{
    public function make()
    {
        echo "Hp mouse \n";
    }
}

/*************  键盘 ******************************/

interface Keyboard {
    public function make();
}

//惠普键盘
class HpKeyboard implements Keyboard
{
    public function make()
    {
        echo "惠普键盘 \n";
    }
}

//戴尔键盘
class DellKeyboard implements Keyboard
{
    public function make()
    {
        echo "惠普键盘 \n";
    }
}


/********************** 工厂 ******************************/

interface PcFactor
{
    //制造鼠标
    public function createMouse();
    //制造键盘
    public function createKeyboard();
    //制造摄像头
    public function createCamera();
}

//戴尔工厂
class DellFactor implements PcFactor
{
    //戴尔鼠标对象
    public function createMouse()
    {
        return new DellMouse();
    }

    //戴尔键盘对象
    public function createKeyboard()
    {
        return new DellKeyboard();
    }

    //戴尔摄像头
    public function createCamera()
    {
        return new DellCamera();
    }

}

//惠普工厂
class HpFactor implements PcFactor
{
    public function createMouse()
    {
        return new HpMouse();
    }

    public function createKeyboard()
    {
        return new HpKeyboard();
    }

    public function createCamera()
    {
        return new HpCamera();
    }
}


/********************* test ***************/

//制作戴尔鼠标和键盘
$dellFactor = new DellFactor();
$dellFactor->createMouse()->make();
$dellFactor->createKeyboard()->make();

//制作惠普鼠标和键盘
$hpFactor = new HpFactor();
$hpFactor->createMouse()->make();
$hpFactor->createKeyboard()->make();

// ? 增加一个产品 摄像头

/******************* 摄像头 *********************/

//摄像头接口类
interface Camera
{
    public function make();
}

//戴尔摄像头
class DellCamera implements Camera
{
    public function make()
    {
        echo "戴尔摄像头\n";
    }
}

//惠普摄像头
class HpCamera implements Camera
{
    public function make()
    {
        echo "惠普摄像头\n";
    }
}

//戴尔工厂 和惠普工厂 也要增加 制作摄像头的方法

//制造戴尔摄像头
$dellFactor->createCamera()->make();
//执照惠普摄像头
$hpFactor->createCamera()->make();


// ? 如果增加一个品牌呢 华为

//华为鼠标
class HuaweiMouse implements Mouse
{
    public function make()
    {
        echo "华为鼠标 \n";
    }
}
//华为键盘
class HuaweiKeyboard implements Keyboard
{
    public function make()
    {
        echo "华为键盘 \n";
    }
}
//华为摄像头
class HuaweiKeyCamera implements Camera
{
    public function make()
    {
        echo "华为摄像头 \n";
    }
}


//华为工厂
class HuaweiFactor implements PcFactor
{
    //华为鼠标
    public function createMouse()
    {
        return new HuaweiMouse();
    }

    //华为键盘
    public function createKeyboard()
    {
        return new HuaweiKeyboard();
    }

    //华为摄像头
    public function createCamera()
    {
        return new HuaweiKeyCamera();
    }

}

//调用
$huaweiFactor = new HuaweiFactor();
//制作华为鼠标
$huaweiFactor->createMouse()->make();
//制造华为键盘
$huaweiFactor->createKeyboard()->make();
//制造华为摄像头
$huaweiFactor->createCamera()->make();











 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值