public function testFlyweight() { $factory = new FlyweightFactory(); for ($i = 0; $i < $this->numberOfCharacters; $i++) { $char = $this->characters[array_rand($this->characters)]; $font = $this->fonts[array_rand($this->fonts)]; $flyweight = $factory->{$char}; // External state can be passed in like this: // $flyweight->draw($font); } // Flyweight pattern ensures that instances are shared // instead of having hundreds of thousands of individual objects $this->assertLessThanOrEqual($factory->totalNumber(), count($this->characters)); }
public function testFlyweight() { $factory = new FlyweightFactory(); foreach ($this->characters as $char) { foreach ($this->fonts as $font) { $flyweight = $factory->get($char); $rendered = $flyweight->render($font); $this->assertEquals(sprintf('Character %s with font %s', $char, $font), $rendered); } } // Flyweight pattern ensures that instances are shared // instead of having hundreds of thousands of individual objects // there must be one instance for every char that has been reused for displaying in different fonts $this->assertCount(count($this->characters), $factory); }