zoukankan      html  css  js  c++  java
  • 工厂方法模式 更切合实际的需求 带仓库材料判断

    <?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);
    
    //第四期需要在制造和维修前判断材料充足不
    
    
    
    ?>
  • 相关阅读:
    洛谷 P1244 青蛙过河
    洛谷 P1004 方格取数
    洛谷 CF894A QAQ
    【题解】洛谷 P5506 封锁
    洛谷 P3884 [JLOI2009]二叉树问题
    Bzoj4894 天赋
    Bzoj4893 项链分赃
    Bzoj3583 杰杰的女性朋友
    POJ3233 Matrix Power Series
    UOJ#204 【APIO2016】Boat
  • 原文地址:https://www.cnblogs.com/jiufen/p/4990785.html
Copyright © 2011-2022 走看看