“颜色”结构的最佳设计模式是什么?

时间:2011-01-24 13:36:39

标签: design-patterns colors

实现'颜色'数据结构(在C#中)最好的设计模式是什么? 我希望能够在任何颜色空间中表示颜色 - RGB,HSV,XYZ,Yxy,Luv,Lab,HSL等。我希望能够从一种格式转换为另一种格式。我想支持固定数量的色彩空间。

1 个答案:

答案 0 :(得分:1)

你可以创建一个可以从一个转换为另一个的辅助类,这样你就可以使用像Vector3这样的简单类来保存你的数据。

由于RGB,HSV和all都只有3个值,因此Vector3可用于所有数据。但是,程序员不应该将错误的值输入到错误的方法中。

确保正确的价值类型。我们可以使用一些Vector3作为基类,然后让每个类型(如RGB)从基类继承。

你甚至可以选择创建一个名为Color的“interclass”。这是一个抽象类。然后RGB类可以实现所有抽象定义的方法。

所以你得到:

  • Vector3(大多数语言都有这样的类)
  • abstract Color extends Vector3(有抽象方法)
  • RGB extends Color(实现转换为其他类的所有方法)。

Color中的抽象方法转换,只会返回一个Color本身。所以你可以像这样覆盖方法。