@startuml /' FLYWEIGHT '/ class FlyweightFactory { - unordered_map + getFlyweight() + listFlyweights() } interface Flyweight { # operation(in extrinsicState) } class Client class ConcreteFlyweight { - intrinsicState + operation(in extrinsicState) } class UnsharedConcreteFlyweight { - allState + operation(in extrinsicState) } hide empty members FlyweightFactory *- Flyweight Flyweight <|-- ConcreteFlyweight Flyweight <|-- UnsharedConcreteFlyweight FlyweightFactory <-- Client ConcreteFlyweight <-- Client UnsharedConcreteFlyweight <-- Client note as N1 Flyweight Type: Structural Enregistre les objets dans une structure de données, capable de supporter un effectif vaste d'objet du même type. end note @enduml