【笔试题】用PHP写一个微波炉

互联网 19-6-17
在网上看到一个笔试题,感觉挺有意思的,然后我尝试着解一解,欢迎各位大佬指正。

代码题(用 OOP 的思想编码,注意代码规范) 写出你的思路,最好有代码

用 php 写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热。

感谢大佬们的建议,更进一步理解了 OOP,现更新第二版

第二版

<?php /**  * Created by PhpStorm.  * User: arun  * Date: 2019-04-30  * Time: 16:10  */ /**  * 厨房用具  * Interface kitchenWare  */ interface kitchenWare {     /**      * 加工食材      * @param Food $food      * @return mixed      */     public function process(Food $food);     /**      * 是否正在加工      * @return mixed      */     public function hasProcess(); } /**  * 微波炉  * Class MicrowaveOven  */ class MicrowaveOven implements kitchenWare {     /**      * 是否加热中      * @var bool      */     protected $is_heat = false;     /**      * @param Food $food      * @return mixed|string      */     public function process(Food $food)     {         if ($this->hasProcess()) {             return '已有食物在加热,无法打开';         } else {             if ($food->hasShuck() || $food->hasPericarp()) {                 return '食物带壳或者带皮,无法进行加热';             } else {                 $this->is_heat = true;                 return '食物加热中,加热完成即可取出';             }         }     }     /**      * 是否正在加工      * @return bool|mixed      */     public function hasProcess()     {         return $this->is_heat;     } } /**  * 烤箱  * Class Oven  */ class Oven implements kitchenWare {     /**      * 是否烧烤中      * @var bool      */     protected $is_heat = false;     /**      * @param Food $food      * @return mixed|string      */     public function process(Food $food)     {         if ($this->is_heat) {             return '已有食物在烤制,无法打开';         } else {             if ($food->hasShuck()) {                 return '食物带壳,无法进行烤制';             } else {                 $this->is_heat = true;                 return '食物烤制中,完成即可取出';             }         }     }     /**      * 是否正在加工      * @return bool|mixed      */     public function hasProcess()     {         return $this->is_heat;     } } /**  * 食物  * Class Food  */ class Food {     /**      * 是否带壳      * @var bool      */     protected $is_shuck = false;     /**      * 是否带皮      * @var bool      */     protected $is_pericarp = false;     /**      * Food constructor.      * @param bool $is_shuck      * @param bool $is_pericarp      */     public function __construct(bool $is_shuck, bool $is_pericarp)     {         $this->is_shuck = $is_shuck;         $this->is_pericarp = $is_pericarp;     }     /**      * 判断是否带壳      * @return bool      */     public function hasShuck()     {         return $this->is_shuck;     }     /**      * 判断是否带皮      * @return bool      */     public function hasPericarp()     {         return $this->is_pericarp;     } } /**  * 烹饪  * Class Cooking  */ class Cooking {     /**      * @var kitchenWare      */     protected $kitchenWare;     /**      * Cook constructor.      * @param kitchenWare $kitchenWare      */     public function __construct(kitchenWare $kitchenWare)     {         $this->kitchenWare = $kitchenWare;     }     /**      * 烹饪食物      * @param Food $food      * @return mixed      */     public function cooking(Food $food)     {         $data = $this->kitchenWare->process($food);         return $data;     } } /**  * 微波炉加热  * @return mixed  */ function test() {     $cooking = new Cooking(new MicrowaveOven());     $food = new Food(false, false);     $result = $cooking->cooking($food);     $result2 = $cooking->cooking($food);     var_dump($result, $result2); } /**  * 烤箱烤制  * @return mixed  */ function test2() {     $cooking = new Cooking(new Oven());     $food = new Food(false, true);     $result =  $cooking->cooking($food);     $result2 =  $cooking->cooking($food);     var_dump($result, $result2); } test(); test2();

第一版

<?php /**  * Created by PhpStorm.  * User: arun  * Date: 2019-04-30  * Time: 16:10  */ /**  * 厨房用具  * Interface kitchenWare  */ interface kitchenWare {     /**      * 加工食材      *      * @param $food      * @return mixed      */     public function process($food); } /**  * 微波炉  * Class MicrowaveOven  */ class MicrowaveOven implements kitchenWare {     /**      * 是否加热中      * @var bool      */     protected $is_heat = false;     public function process($food)     {         if ($this->is_heat) {             return '已有食物在加热,无法打开';         } else {             if ($food['is_shuck'] || $food['is_pericarp']) {                 return '食物带壳或者带皮,无法进行加热';             } else {                 $this ->is_heat = true;                 return '食物加热中,加热完成即可取出';             }         }     } } /**  * 烤箱  * Class Oven  */ class Oven implements kitchenWare {     /**      * 是否烧烤中      * @var bool      */     protected $is_heat = false;     public function process($food)     {         if ($this->is_heat) {             return '已有食物在烤制,无法打开';         } else {             if ($food['is_shuck']) {                 return '食物带壳,无法进行烤制';             } else {                 $this ->is_heat = true;                 return '食物烤制中,完成即可取出';             }         }     } } /**  * 食物  * Class Food  */ class Food {     /**      * 是否带壳      * @var bool      */     protected $is_shuck = false;     /**      * 是否带皮      * @var bool      */     protected $is_pericarp = false;     /**      * Food constructor.      * @param bool $is_shuck      * @param bool $is_pericarp      */     public function __construct(bool $is_shuck, bool $is_pericarp)     {         $this->is_shuck = $is_shuck;         $this->is_pericarp = $is_pericarp;     }     public function getFood()     {         return [             'is_shuck' => $this->is_shuck,             'is_pericarp' => $this->is_pericarp,         ];     } } /**  * 烹饪  * Class Cooking  */ class Cooking {     /**      * @var kitchenWare      */     protected $kitchenWare;     /**      * Cook constructor.      * @param kitchenWare $kitchenWare      */     public function __construct(kitchenWare $kitchenWare)     {         $this->kitchenWare = $kitchenWare;     }     /**      * 烹饪食物      * @param $food      * @return mixed      */     public function cooking($food)     {         $data = $this->kitchenWare->process($food);         return $data;     } } /**  * 微波炉加热  * @return mixed  */ function test() {     $cooking = new Cooking(new MicrowaveOven());     $food = new Food(false, false);     $result = $cooking->cooking($food->getFood());     $result2 = $cooking->cooking($food->getFood());     var_dump($result, $result2); } /**  * 烤箱烤制  * @return mixed  */ function test2() {     $cooking = new Cooking(new Oven());     $food = new Food(false, true);     $result =  $cooking->cooking($food->getFood());     $result2 =  $cooking->cooking($food->getFood());     var_dump($result, $result2); } test(); test2();

以上就是【笔试题】用PHP写一个微波炉的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 微波炉
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:使用file_get_contents()函数读取文件内容

相关资讯