У меня есть класс, содержащий много свойств. Один из них нуждается в специальном пользовательском интерфейсе для редактирования. Пользователь может нажать править для этого свойства в пользовательском интерфейсе, затем внести изменения и либо нажать OK, либо ОтменитьЭффективный способ обновления внешней структуры данных UI
например.
class A{
private List<Employee> employees;
public void EditMyEmployees(){
EmployeeEditorForm editor = new EmployeeEditor(employees);
if(editor.ShowDialog() == DialogResult.OK){
employees = editor.GetEditedEmployeesList();
}
}
}
Проблема в предыдущем коде, что редактор имеет копию ссылки на список сотрудников
и когда редактор делает любые изменения в списке это будет отражено в исходном объекте. Так, нажав ОК или Отмена будет иметь тот же эффект (объект уже обновлен) и нет необходимости в стадии
employees = editor.GetEditedEmployeesList();
Я знаю, что делает глубокую копию для массива сотрудников перед отправкой его в редактор будет решать проблема, но все же я думаю, что это не эффективный способ сделать это.
Я ищу шаблон дизайна, который может сделать это лучше.
Вы можете использовать шаблон команды. Ваш редактор не будет напрямую обновлять список сотрудников, он будет создавать команды, которые могут применяться для изменения списка. Если пользователь нажал «ОК», команды будут применены, если не будут проигнорированы. – dbugger