Проблема.Net SDK, который способ пойти?

Мы пишем SDK для программы CAD и столкнулись с небольшим разногласием относительно определенного типа функции (не только разногласие между различными людьми, также разногласие между моими двумя мозговыми половинами).

Предположите, что существует много классов для определенных типов кривой (эллипс, круг, дуга, строка, bezier и т.д.). Все эти классы могут быть представлены кривой Nurbs. Так должны мы помещать Круг->, Nurbs функционируют на Круге:

public NurbsCurve Circle.ToNurbsCurve()
{
  // Return a circular NurbsCurve or null if the Circle is invalid.
}

или если это - помехи на NurbsCurve:

public static NurbsCurve NurbsCurve.CreateFromCircle(Circle)
{
  // Return a circular NurbsCurve or null if the Circle is invalid.
}
5
задан David Rutten 9 March 2010 в 23:01
поделиться

2 ответа

Думаю, я бы выбрал первое (например, по классам форм, может быть, даже с общим базовым классом или интерфейсом, например IConvertibleToNurbsCurve ), потому что это упрощает, если вы добавите другие формы позже. которые также можно преобразовать в кривую Нурбса .

NurbsCurve кажется менее специализированным и, следовательно, не должна «знать» о более специализированных типах IMHO.

4
ответ дан 14 December 2019 в 19:10
поделиться

Я бы поместил его в класс Circle , потому что он знает, как преобразовать его в кривую Нурбса . Класс NurbsCurve не должен знать обо всех конкретных типах кривых. Таким образом, если вы создаете кривую нового типа, вам не придется изменять класс NurbsCurve .

Кстати, я предлагаю вам объявить метод ToNurbsCurve в интерфейсе, реализованном всеми кривыми (или объявить его виртуальным в абстрактном базовом классе)

1
ответ дан 14 December 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: