El título no tiene el 100% de sentido completo tal como está escrito. Hay clases de singleton, pero en realidad no hay relaciones de singleton. Cualquier relación se puede asignar a una multiplicidad en cada extremo, por lo que si se refiere a one-to -una relación, todo lo que haces es asignar multiplicidad 1 en ambos extremos.
Las clases también pueden tener multiplicidades. No suele ver esto usado, excepto en un caso: singletons.
Cuando se trata de A tener o contener o hacer referencia a B, hay básicamente tres niveles de hermeticidad en UML.
La agregación (punta de flecha romboidal no llena) implica que la contención no es exclusiva y que el objeto contenido no comparte ningún aspecto de su ciclo de vida con el objeto que lo contiene. En la implementación, esto es típicamente un puntero.
La composición (punta de flecha romboidal llena) implica que el objeto contenido se destruye cuando el objeto que lo contiene. Hacer que esto funcione generalmente significa que la contención es exclusiva. En la implementación, este suele ser un puntero cuyo destructor se llama en el destructor de la clase contenedora (aunque no se puede crear en el constructor de la clase que lo contiene).
La asociación dirigida o el atributo de miembro (lo mismo en UML) implica que el objeto contenido es parte del estado, o un componente si se quiere, del objeto que lo contiene. En la implementación, esto normalmente significa que la referencia no es un puntero, o si el objeto contenido se co-crea y destruye con el objeto que lo contiene.
La agregación de un singleton es perfectamente admisible (incluso de varias clases diferentes), porque la agregación es, por definición, no exclusiva.
La composición es un poco dudosa, a menos que la clase contenedora también sea un singleton.
La asociación de atributos/dirigidos es probablemente incorrecta. Si la clase contenedora es un singleton, no tiene sentido hacer que la clase contenida sea singleton también, ya que eso está implícito. Y si la clase contenida se usa como miembro en dos clases diferentes, no puede ser un singleton.
Además de lo anterior, también puede agregar todas las relaciones de uso que desee. Esto es común en todo diseño e implica que la clase en el origen de la relación llama a los métodos en la clase en el objetivo final.
me di cuenta de que nadie había realmente responder a la pregunta del título! –
... y después de mi último comentario, ¡todavía no había recibido respuesta! He actualizado mi diagrama y lo respondí correctamente. Leí mal 'relación singleton' como' patrón singleton'. @ahj –