抽象工厂模式(PHP)

抽象工厂模式的PHP示例代码,便于快速理解该设计模式。
  1. 结构图
    优化前:
    在这里插入图片描述
    优化后:在这里插入图片描述

  2. 口罩工厂

interface IMask {
    function showMask();
}

class LowEndMask implements IMask {
    public function showMask(){
        echo "我的低端口罩\n";
    }
}

class HighEndMask implements IMask {
    public function showMask(){
        echo "我的高端口罩\n";
    }
}
  1. 防护服工厂
interface IProtectiveSuit {
    function showSuit();
}

class LowEndProtectiveSuit implements IProtectiveSuit {
    public function showSuit(){
        echo "我是低端防护服\n";
    }
}


class HighEndProtectiveSuit implements IProtectiveSuit {
    public function showSuit(){
        echo "我是高端防护服\n";
    }
}
  1. 高级工厂和低级工厂
interface IFactory {
    //创建口罩
    function createMask();
    //创建防护服
    function createSuit();
}

class LowEndFactory implements IFactory {
    public function createMask() {
        $mask =  new LowEndMask();
        // .....
        //  LowEndMask的100行初始化代码
        return $mask;
    }

    public function createSuit() {
        $suit =  new LowEndProtectiveSuit();
        // .....
        //  LowEndProtectiveSuit的100行初始化代码
        return $suit;
    }
}

class HighEndFactory implements IFactory {
    public function createMask() {
        $mask =  new HighEndMask();
        // .....
        // HighEndMask的100行初始化代码
        return $mask;
    }

    public function createSuit() {
        $suit =  new HighEndProtectiveSuit();
        // .....
        //  HighEndProtectiveSuit的100行初始化代码
        return $suit;
    }
}
  1. 测试接口
class Test {

    public function main() {
        $factoryA = new LowEndFactory();
        $factoryB = new HighEndFactory();
        //创建低端口罩
        $maskA = $factoryA ->createMask();
        //创建高端口罩
        $maskB = $factoryB ->createMask();
        //创建低端防护服
        $suitA = $factoryA ->createSuit();
        //创建高端防护服
        $suitB = $factoryA ->createSuit();

        $maskA->showMask();
        $maskB->showMask();
        $suitA->showSuit();
        $suitB->showSuit();
    }
}

$tst = new Test();
$tst ->main();

结果:
在这里插入图片描述
参考: https://mp.weixin.qq.com/s/K_E9pI5rnkjHU0eizg9lqg

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值