Ответ 1
Название не дает 100% полного смысла, как написано. Существуют классы singleton, но на самом деле не существует односторонних отношений. Любым отношениям может быть присвоена множественность с обоих концов, поэтому, если вы имеете в виду отношения "один к одному", все, что вы делаете, это назначение множественности 1 с обоих концов.
Классы также могут иметь множественность. Вы не часто видите, что это используется, за исключением одного случая: одиночные.
Когда дело доходит до того, что A имеет или содержит или ссылается на B, в UML существуют три уровня герметичности.
Агрегация (незаполненная ромбовидная стрелка) подразумевает, что сдерживание не является исключительным и что содержащийся объект не разделяет какой-либо аспект его жизненного цикла с содержащим объектом. В реализации это обычно указатель.
Состав (заполненный ромбовидный указатель стрелки) подразумевает, что содержащийся объект уничтожается, когда объект, содержащий объект. Как правило, это означает, что сдерживание является исключительным. В реализации это часто указатель, деструктор которого вызывается в деструкторе содержащего класса (хотя он не может быть создан в конструкторе содержащего класса).
Направленная ассоциация или атрибут члена (то же самое в UML) подразумевает, что содержащийся объект является частью состояния или составляющей, если хотите, содержащего объект. В реализации это обычно означает, что ссылка не является указателем, или если она заключается в том, что содержащийся объект создается совместно и-разрушается с помощью содержащего объекта.
Агрегация одноэлементна вполне допустима (даже из нескольких разных классов), поскольку агрегация по определению является неэксклюзивной.
Состав немного, если только содержащийся класс также является одиночным.
Атрибут/направленная ассоциация, скорее всего, неверна. Если содержащийся класс является одноэлементным, то не имеет смысла делать содержащийся в нем класс singleton, так как это подразумевается. И если содержащийся класс используется как член в двух разных классах, он не может быть одиночным.
В дополнение к вышесказанному вы также можете добавить как можно больше отношений использования. Это характерно для всего дизайна и подразумевает, что класс в исходном конце отношения вызывает методы в классе на целевом конце.