public function createUnionRobot($count) { $result_robot = new UnionRobot(); foreach ($this->appended_robot_array as $robot) { $result_robot->addRobot($robot); } $result_robot_array = array_fill(0, $count, $result_robot); return $result_robot_array; }
/** * Создать роботов * @param $count * @return array * @throws Exception */ public function createUnionRobot($count) { if ($count <= 0) { throw new Exception('Invalid param'); } $result = []; for ($i = 0; $i < $count; $i++) { $unionRobot = new UnionRobot(); $unionRobot->addRobot(new MyHydra2()); $unionRobot->addRobot($this->createMyHydra2(2)); $result[] = $unionRobot; } return $result; }
<?php /* Основной метод сложения роботов, по моему мнению, должен быть именно в UnionRobot, а не в Factory, т.к. UnionRobot по задумке интерфейса имеет метод addRobot. Factory же в свою очередь будет создавать UnionRobot и использовать его же метод addRobot, что бы сложить все добавленные в фабрику роботы в UnionRobot и потом его вернуть. Плюс ко всему UnionRobot будет тогда независим от Factory и его можно будет использовать повторно в других ситуациях. Начал выполнение в 10:38. Закончил выполенение в 11:33. */ require_once 'myhydra1.php'; require_once 'myhydra2.php'; require_once 'unionrobot.php'; require_once 'factory.php'; $factory = new Factory(); $factory->addType(new MyHydra1()); $factory->addType(new MyHydra2()); var_dump($factory->createMyHydra1(5)); var_dump($factory->createMyHydra2(2)); $unionRobot = new UnionRobot(); $unionRobot->addRobot(new MyHydra2()); $unionRobot->addRobot($factory->createMyHydra2(2)); $factory->addType($unionRobot); $result = reset($factory->createUnionRobot(1)); var_dump($result);
<?php /** * Created by PhpStorm. * User: ArtUr * Date: 29.09.2015 * Time: 12:14 */ include 'Factory.php'; include 'MyHydra1.php'; include 'MyHydra2.php'; include 'UnionRobot.php'; /* Create factory object */ $factory = new Factory(); /* Add type of robot to factory */ $factory->addType(new MyHydra1()); $factory->addType(new MyHydra2()); /* Generate objects of robots */ $myHydra1robot = $factory->createMyHydra1(); $myHydra2robots = $factory->createMyHydra2(2); /* Create unionRobot object and set included types of robots */ $unionRobot = new UnionRobot(); $unionRobot->addRobot($myHydra1robot); $unionRobot->addRobot($myHydra2robots); /* Add union robot to factory list of types */ $factory->addType($unionRobot); /* Generate objects of robots */ $unionRobots = $factory->createUnionRobot(5); $unionRobot->addRobot($myHydra2robots);