Я работаю над приложением для обновления базы данных. Программа обновления обновляет схему базы данных (добавляет новые столбцы, переименовывает столбцы, добавляет новые таблицы, новые представления в существующую базу данных, выполняя операторы SQL). Когда пользователь хочет обновить версию 1.0 до 2.0, объекты «Upgrader» берутся из фабрики объектов и вызывается метод «Execute» для каждого «Upgrader». Графический интерфейс приложения имеет индикатор выполнения, и каждый раз, когда объект средства обновления выполняет оператор SQL, индикатор выполнения увеличивается.
while (!version.Equal(CurrentVersion))
{
IUpgrader myUpgrader = UpgraderFactory.GetUpgrader(version);
myUpgrader.Execute(UpgradedFile,progressbar);
version.Increment();
}
Мой вопрос очень прост: как объект обновления должен взаимодействовать с индикатором выполнения. В приведенном выше коде объекту обновления предоставляется прямой доступ к панели прогресса, но мне интересно, существует ли какой-либо лучший способ сделать это или лучший шаблон проектирования.
С уважением,
Себ