工厂方法模式 更切合实际的需求 带仓库材料判断

<?php
//各种兵来一个接口
interface bingge
{
    public function make();//制造
    public function weixiu();//维修
}
//制造各种兵的原材料数量
class cailiao
{
    static $jingsu = 5;//金属-做机枪兵
    static $qiyou = 24;//汽油-做火焰兵

    static function howmanyQiyou()
    {
        if(self::$qiyou<20)
        {
            echo "你仓库的汽油少于20公斤,请先去商店购买!";
            return false;
        }
        else
        {
            return true;
        }
    }
    public function hedui()
    {
        echo "原材料仓库统计核对";
    }
}

//现在制造的时候仓库要属于个人的,按用户名来判断材料,而且材料数量在数据库呢,怎么办
//?????????????下一步做这个

//维修材料管理部-如果维修前要做判断螺丝刀数量够不够等,可以和仓库一样的操作
class weixiubu
{
    static $nuosidao =10;

}
//火焰兵
class huoyan implements bingge
{
    public function make()
    {
        if(cailiao::howmanyQiyou())
        {
            echo "我是刚刚制造出来的一个火焰兵";
            cailiao::$qiyou = cailiao::$qiyou - 5;//制造一个火焰兵,仓库汽油减去5
        }
    }

    public function weixiu()
    {
        echo "我在维修一个火焰兵";
    }
}

//机枪兵
class jiqiang implements bingge
{
    public function make()
    {
        echo "我是一个机枪兵";
    }

    public function weixiu()
    {
        echo "我在维修一个机枪兵";
    }
}

//如果第二期需要:坦克兵,就只用在这里添加
class tanke implements bingge
{
    public function make()
    {
        echo "我是一个坦克兵!";
    }

    public function weixiu()
    {
        echo "我在维修一个坦克兵!";
    }
}

//建造士兵的工具
class makeshibing
{
    public function zuosa($canshu)
    {
        $comeon = new $canshu["who"];
        $comeon->$canshu["what"]();
    }
}

//一个建造实例
$begin = new makeshibing();
$canshu = array
(
    "who"  =>  "huoyan" ,
    "what"  =>  "make" ,
);
$how = $begin->zuosa($canshu);

echo "<hr>";

//再制造一个火焰兵,看汽油消耗不够了还能不能做
$begin = new makeshibing();
$canshu = array
(
    "who"  =>  "huoyan" ,
    "what"  =>  "make" ,
);
$how = $begin->zuosa($canshu);

echo "<hr>";

//第二期需要增加坦克兵种
$begin = new makeshibing();
$canshu = array
(
    "who"  =>  "tanke" ,
    "what"  =>  "make" ,
);
$how = $begin->zuosa($canshu);

echo "<hr>";

//第三期需要维修和制造一起
$begin = new makeshibing();
$canshu = array
(
    "who"  =>  "tanke" ,
    "what"  =>  "weixiu" ,
);
$how = $begin->zuosa($canshu);

//第四期需要在制造和维修前判断材料充足不



?>
原文地址:https://www.cnblogs.com/jiufen/p/4990785.html