public void Operation(String key, boolean shared) { Flyweight flyweight; if (shared) { flyweight = FlyweightFactory.getFlyweight(key); } else { flyweight = new UnsharedConcreteFlyweight(key); } flyweight.Operation("changed extrinsicly"); }