实现'颜色'数据结构(在C#中)最好的设计模式是什么? 我希望能够在任何颜色空间中表示颜色 - RGB,HSV,XYZ,Yxy,Luv,Lab,HSL等。我希望能够从一种格式转换为另一种格式。我想支持固定数量的色彩空间。
答案 0 :(得分:1)
你可以创建一个可以从一个转换为另一个的辅助类,这样你就可以使用像Vector3
这样的简单类来保存你的数据。
由于RGB,HSV和all都只有3个值,因此Vector3
可用于所有数据。但是,程序员不应该将错误的值输入到错误的方法中。
确保正确的价值类型。我们可以使用一些Vector3
作为基类,然后让每个类型(如RGB)从基类继承。
你甚至可以选择创建一个名为Color
的“interclass”。这是一个抽象类。然后RGB
类可以实现所有抽象定义的方法。
所以你得到:
Vector3
(大多数语言都有这样的类)abstract Color extends Vector3
(有抽象方法)RGB extends Color
(实现转换为其他类的所有方法)。Color中的抽象方法转换,只会返回一个Color本身。所以你可以像这样覆盖方法。