Ответы пользователя по тегу Алгоритмы
  • Помогите определиться с архитектурой библиотеки управления цветом на C#

    ostapbender
    @ostapbender
    Единый immutable класс Color, который конвертирует во все представления «на лету»

    class Color
    {
        private Rgb rgb;
        private Lab lab;
    
        public Rgb Rgb
        {
            get { return rgb ?? (rgb == ToRgb(this)); }
        }
    
        public Lab Lab
        {
            get { return lab ?? (lab == ToLab(this)); }
        }
    
        public static Color FromRgb(int r, int g, int b)
        {	
        }
    
        public static Color FromHsv(...)
        {	
        }
    
        public static Color FromLab(...)
        {	
        }
    
        private static Rgb ToRgb(Color c)
        {	
        }
    
        private static Lab ToLab(Color c)
        {	
        }
    }
    


    И потом реализации всяких операций используют то представление, в котором им удобнее работать:

    class ColorOperations
    {
        public static Color Darken(Color c, float amount)
        {
            // Тут выгоднее использовать c.Hsv
        }
    
        public static Color Sharpen(Color c, float amount)
        {
            // А тут выгоднее использовать c.Lab
        }
    }
    
    Ответ написан
    Комментировать