Мне часто поручается обработка списка задач. Обычно для этого требуется, чтобы я что-то искал программным способом и хранил его где-то (база данных, общий ресурс файла, ftp и т. Д.). Затем мне нужно обработать текстовый файл, xml, sql result set или что-то еще, и сохранить мои результаты.Есть ли какие-либо шаблоны дизайна для устранения «моя программа на самом деле просто большая петля»?
Например:
У меня есть база данных, которая детализирует список кучи сетей, которые могут или не могут быть подключены к моей сети. Если нет, я должен использовать Windows RAS для подключения к серверу в сети. В некоторых сетях может быть больше одного компьютера. Я должен вытащить файл конфигурации из каждой системы (имеет ли сеть один или несколько) и сохранить это в базе данных. Затем я должен разобрать определенную информацию из этих файлов и сохранить ее в базе данных. Мне также нужно отслеживать, когда система была проверена и были ли какие-либо ошибки.
У меня есть абстракция базы данных, она хороша аккуратно и организована. Моя база данных готова для данных, всех ошибок, проверок для конкретных систем, ошибок и т. Д.
Остальная часть приложения - это совсем другая история. Кажется, что это всегда завернуто в один цикл в основной функции, с некоторыми случайными классами (например, с классом ConfigurationFile, классом ConnectToNetwork и т. Д.) Для хранения функций, выполняющих задачи, специфичные для моего приложения (действительно, мой вопрос, вероятно, заключается в том, классы).
Вот и пример:
static void main()
{
var networks = NetworkLocationsRepository.GetAll();
foreach(var network in networks)
{
ConfigurationFile file = null;
if(!network.IsConnected)
{
ConnectToNetwork(network);
}
foreach(var system in network.Systems)
{
file = GetConfigFile(system);
ConfigurationFileRepository.Add(file);
var configData = ParseConfiguration(file);
ConfigurationFileRepository.UpdateData(file, configData);
}
}
}
Редактировать
В ответ на замечания, я не настолько обеспокоен с петлей (несмотря на то, что вот что мое название сосредотачивается на). Я знаю, что, поскольку у меня есть набор элементов для итерации, в какой-то форме или форме, у меня будет цикл. Действительно, меня больше интересует все, что попадает в цикл. Этот пример довольно простой, но, скажем, у меня есть 10 различных задач для каждой системы? Разумеется, не самый лучший подход - использовать кучу операторов if, чтобы определить, должны ли выполняться задачи, заполненные в один цикл foreach?
lol - Извините, но название смешно. –
эй, я должен как-то привлечь ваше внимание. – scottm
Хммм, я думаю, я действительно не понимаю проблему. – Dolphin