Manage large numbers of fine-grained objects by sharing to improve efficiency.
More info
Profile download (Rational Rose model)
context Flyweight inv: self.isRoot implies (self.isAbstract and self.fFT->size() = 1) inv: self.isAbstract implies (self.specialization->size() > 0 and self.specialization->forAll (c | c.child.oclIsKindOf (Flyweight))) inv: not self.isAbstract implies self.cFF->size() = 1 context aFlyweightFactory inv: self.fFT.isNavigable and not self.fFY.isNavigable and self.fFY.aggregation = AggregationKind::aggregate context aClientFlyweight inv: self.cFF.isNavigable and not self.cFC.isNavigable context aClientFlyFactory inv: self.cFFY.isNavigable and not self.cFFT.isNavigable
This instance, even though correct in another interpretation of the pattern, is incorrect in our profile because there is no flyweight class hierarchy with an abstract base class.