Ответ Джастина в основном правильный и будет работать. У меня есть две проблемы.
Утечка памяти
Одной из проблем является утечка памяти, предполагая, что панели могут быть удалены до завершения работы приложения, как я прокомментировал.
Используйте слабые ссылки в списке панелей, чтобы избежать утечки памяти.
Если панели всегда сохраняются до конца выполнения приложения, проблем не возникает. Вы можете игнорировать этот пункт.
Разделение интересов
Другая проблема - это разделение интересов. Если панели имеют разные цвета, но какой-то другой объект, например GameMaster, хочет управлять цветом всех панелей, то именно класс GameMaster должен содержать коллекцию экземпляров панели, а не статический список на панели. учебный класс.
Как тогда зарегистрировать каждую новую панель в GameMaster? Если у вас есть только одно место, где вы создаете экземпляр, передайте этому объекту ссылку на GameMaster, чтобы получить доступ к его списку и добавить новую панель. Скорее всего, именно GameMaster является тем местом, которое создает экземпляры панелей и может регистрировать каждый новый экземпляр со своим списком панелей.
Кстати, ваше имя PanelGen
беспокоит меня. Если «gen» относится к «генератору», то вы можете связывать менеджер / генератор панелей с панелями. В этом случае должно быть два класса, а не один комбо. Это жизненно важный момент в этом контексте, так как мы обсуждали выше, куда следует возложить ответственность за создание экземпляров панелей, отслеживание их существования и равномерное изменение их цвета.