Мне кажется зря вы наплодили этих классов. Уж лучше бы цвет просто знал свой ColorSpace, и умел куда нужно конвертиться. Просто запросто может потребоваться добавить еще ряд цветовых пространств (Luv, Yuv, BGR, BGRA), и у вас будет взрывной рост сущностей и тестов соответственно.

Можете посмотреть как у других сделаны конверторы например весов и длин (с использованием enum), и я бы посоветовал в следующей лабе упростить дизайн.