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)); } }