Hai notato correttamente che non c'è composizione o aggregazione nel caso della fabbrica. Fortunatamente, ci sono molti altri tipi di relazione:
Source: https://en.wikipedia.org/wiki/File:Uml_classes_en.svg by Yanpas, used under a CC-BY-SA 4.0 license.
Il tipo più generale di relazione è la relazione "associazione" ("link"). Nel tuo caso, è una relazione diretta: la fabbrica utilizza il prodotto, quindi la freccia punta dalla fabbrica al prodotto. Io uso la relazione "associazione" ogni volta che una classe chiamerebbe metodi sull'altra. Un costruttore è effettivamente un metodo statico, quindi funziona. L'aggregazione e la composizione sono tipi più specifici di aggregazione e introducono un senso di proprietà che non è applicabile qui.
Anche una dipendenza sarebbe possibile, ma denota una relazione più debole. Le associazioni mostrano collegamenti effettivamente presenti nel codice. Se la fabbrica in qualsiasi momento contiene un riferimento al prodotto, è in atto un'associazione - mostra che è possibile navigare nel collegamento (chiamando un metodo). Una relazione di dipendenza è più simile a una relazione in fase di progettazione e non fa alcuna dichiarazione sulla struttura di runtime del sistema.
In ogni caso, puoi annotare la relazione con uno stereotipo UML. Lo stereotipo <<use>>
sarebbe abbastanza generale e <<create>>
si adatterebbe meglio.
Per riassumere, mi aspetterei qualcosa del genere: