Редактировать: полностью переписал мой ответ на основе ваших комментариев ...
Хорошо, так что у вас всегда есть класс Line
, и вопрос в том, куда поместить логику для добавления линии в многоугольник.
Ваш Line
CT или предполагает наличие необязательного предшественника Line
объекта.Если вы измените это так, что CTor принимает дополнительный Point
, будет меньше связи.Другие классы, которые могут появиться в будущем, также могут строить линии, используя начальную точку, длину и угол.Таким образом, подход CTor выглядит хорошо с этой точки зрения.
Кроме того, многоугольник - это в основном набор связанных линий (и дуг, как следует из вашего комментария), поэтому логика для вычисления конечной точки линии действительно соответствуетв класс Line
.Опять же, таким образом, возможно, другим пользователям Line
не придется дублировать код Polygon
.
Как уже упоминалось, существует третий способ:
Вы можете, например, создать LineFactory
класс, который создает Line
объект на основе начальной точки, длины и угла.Затем эта фабричная функция будет выполнять вычисления и устанавливать начальную и конечную точки конца линии.