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;
 }
Example #2
0
 /**
  * Создать роботов
  * @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;
 }
Example #3
0
<?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);
Example #4
0
<?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);