Каков наилучший шаблон дизайна для «цветной» структуры? - PullRequest
0 голосов
/ 24 января 2011

Каким будет лучший шаблон проектирования для реализации «цветной» структуры данных (в C #)?Я хотел бы иметь возможность представлять цвет в любом из цветовых пространств - RGB, HSV, XYZ, Yxy, Luv, Lab, HSL и т. Д., И я хотел бы иметь возможность преобразовывать один формат в другой.Я хотел бы поддержать фиксированное количество цветовых пространств.

1 Ответ

1 голос
/ 24 января 2011

Вы можете создать вспомогательный класс, который может преобразовывать один в другой, поэтому вы можете просто использовать простые классы, такие как Vector3 или какой-то еще, для хранения ваших данных.

Поскольку RGB, HSV и все это всего лишь 3 значения, для всех данных можно использовать Vector3. Но затем программист не должен вводить неправильные значения в неправильные методы.

Для обеспечения правильного типа значения. Мы могли бы использовать Vector3 в качестве базового класса, а затем позволить каждому типу (например, RGB) наследоваться от базового класса.

Вы даже можете создать «межкласс», который называется Color. Который является абстрактным классом. Класс RGB может затем реализовать все абстрактно определенные методы.

Итак, вы получите:

  • Vector3 (большинство языков имеют такой класс)
  • abstract Color extends Vector3 (имеет абстрактные методы)
  • RGB extends Color (реализует все методы для преобразования в другие классы).

Абстрактные методы в Color, которые конвертируют, просто возвращают сам Color. Таким образом, вы можете переопределить метод следующим образом.

...