public static function main() { $flyweightFactory = new FlyweightFactory(); $flyweight = $flyweightFactory->getFlyweight("state A"); $flyweight->operation("state X"); $flyweight = $flyweightFactory->getFlyweight("state B"); $flyweight->operation("state B"); $flyweight1 = $flyweightFactory->getFlyweight("state B"); var_dump($flyweight == $flyweight1); /** * unshared objs */ $uflyweight = new UnsharedConcreteFlyweight('state A'); $uflyweight->operation('state Y'); }