<?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);
<?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 include_once "Hydra.php"; include_once "MyHydra1.php"; include_once "MyHydra2.php"; include_once "UnionRobot.php"; include_once "Factory.php"; $factory = new Factory(); // @warning Strict Standards: Only variables should be passed by reference $data = $factory->createUnionRobot(1); $res = reset($data); echo "<pre>"; echo "SPEED - {$res->getSpeed()}<br />"; echo "WEIGHT - {$res->getWeight()} <br />"; echo "</pre>";