php设计模式_简单工厂2

本文介绍了一种使用PHP实现的工厂模式,通过抽象类和具体类的组合,创建不同类型的披萨产品。展示了如何通过参数化的工厂方法来实例化不同的披萨对象,并执行烹饪和包装操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

class ChinaPizzaA {

    public function __construct () {
        print_r('create ChinaPizzaA instance');
    }   

    public function cook () {
        print_r('cooking ChinaA pizza!');
    }   

    public function box () {
        print_r('boxing ChinaA pizza!');
    }   
}
<?php

class ChinaPizzaB {

    public function __construct () {
        print_r('create CHinaPizzaB instance');
    }   

    public function cook () {
        print_r('cooking ChinaB pizza!');
    }   

    public function box () {
        print_r('boxing ChinaB pizza!');
    }   
}
<?php

class UsPizzaA {

    public function __construct () {
        print_r('create UsPizzaA instance');
    }   

    public function cook () {
        print_r('cooking Uspizza!');
    }   

    public function box () {
        print_r('boxing Uspizza!');
    }   
}
<?php

class UsPizzaB {

    public function __construct () {
        print_r('create UsPizzaB instance');
    }   

    public function cook () {
        print_r('cooking UspizzaB!');
    }   

    public function box () {
        print_r('boxing UspizzaB!');
    }   
}
<?php
require 'ChinaPizzaA.php';
require 'ChinaPizzaB.php';
require_once 'PizzaStore.php';

class ChinaPizzaStore extends PizzaStore {

    public function createPizza ($type) {
        $pizza = ''; 

        if ($type == 'PizzaA') {
            $pizza = new ChinaPizzaA();
        } elseif ($type == 'PizzaB') {
            $pizza = new ChinaPizzaB();
        }   

        return $pizza;
    }   
} 
<?php
require 'UsPizzaA.php';
require 'UsPizzaB.php';
require_once 'PizzaStore.php';

class UsPizzaStore extends PizzaStore {

    public function createPizza ($type) {
        $pizza = ''; 

        if ($type == 'PizzaA') {
            $pizza = new UsPizzaA();
        } elseif ($type == 'PizzaB') {
            $pizza = new UsPizzaB();
        }   

        return $pizza;
    }   
} 
<?php

abstract class PizzaStore {
    
    public function orderPizza ($type) {
        $pizza = $this->createPizza($type);
    
        $pizza->cook();
        $pizza->box();

        return $pizza;
    }   

    protected abstract function createPizza ($type) ;
}
<?php
require 'ChinaPizzaStore.php';
require 'UsPizzaStore.php';

$p_store = new ChinaPizzaStore();
$p_store->orderPizza('PizzaA');

$p_store = new UsPizzaStore();
$p_store->orderPizza('PizzaA');


说明: 采用抽象方法createPizza 让子类的商店去继承  强制让他实现这个方法  从而保持框架低耦合性 可控





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值