У меня есть следующая реализация класса (не полная, просто чтобы дать представление)
public class MySwitch{
Command command = Command.Red;
public Command GetNext() {
command = GetNext(command); // circular enum values
return command;
}
}
public enum Command { Red =0, Blue=1, Green=2}
public class LED {
public void Glow(Command command){
this.setColor(ColorForm(command));
this.Glow();
}
}
public class Commander {
public Commander(LED target, MySwitch source){
this.LED = LED;
this.MySwitch = MySwitch;
}
public void Execute(){
this.LED.Glow(this.MySwitch.GetNext());
}
}
Я хочу, чтобы эти объекты отображались в элементы пользовательского интерфейса.Учтите, у меня есть приложение win form, где переключатель и светодиод - это две панели, где я хочу, чтобы GDI рисовал их.
Проблема в том, как лучше всего синхронизировать объекты с элементами пользовательского интерфейса.Возможные варианты:
Создать элемент пользовательского интерфейса, унаследованный от панели, и должен содержать один экземпляр объекта.
Создать элемент пользовательского интерфейса (скажем, LEDUI), унаследованный отBO, и должен содержать контейнер (панель) для рисования и реализации метода рисования с использованием this.Color (например, светодиод) - это приведет к кону файла 2 * BO
Сохранить элемент пользовательского интерфейса иBO отделяют и позволяют ведущему быть мостом между ними.
Реализуйте метод на самом BO для рендеринга (при условии единого пользовательского интерфейса) на winform.Поскольку он не может быть добавлен непосредственно к winform, создайте объект CustomForm
, который позволяет добавлять такие элементы (предположим, IMyObj
), и вызовите CustomFOrm.Render()
, который в конечном итоге вызовет метод render всех childElements.Почти так же, как визуализируются форма и элементы управления.
Любой другой способ
На мой взгляд, пункт 2 - лучший способ.Пожалуйста, предложите, какие плюсы и минусы в различных способах сопоставления BO с пользовательским интерфейсом и как их синхронизировать.Разработчики игр могут лучше понимать.
EDIT
Моя ошибка, может быть много светодиодов и переключателей.К каждому выключателю можно подключить множество светодиодов.Также созданные мной классы не зависят от пользовательского интерфейса.Я не ожидаю решения о том, как найти элемент управления и свечение, но каков наилучший способ реализации, если вам даны эти классы и сказано сделать приложение winform, при условии, что вы будете меньше всего касаться классов, а также будете писать минимальный коднаряду со следующим стандартным способом разработки пользовательского интерфейса