예제 #1
0
 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);
 }