Вопрос в общих чертах:
У меня есть объект с методом, который выполняет длинный итеративный процесс, и у меня есть второй объект, который предназначен для регистрации / мониторинга событий в этом длинном итеративном процессе. Каков наилучший дизайн / шаблон проектирования для наблюдения и мониторинга хода итеративного процесса?
Конкретная проблема, над которой я работаю:
У меня есть RandomWalker
объект с методом InitiateRandomWalk()
, который заставляет случайного бродягу проходить тысячи шагов. У меня также есть объект HeatMaps
, который описывает набор изображений тепловых карт, которые отображаются путем анализа каждого шага случайно пройденного пути.
Я не хочу ждать до завершения метода InitiateRandomWalk()
, чтобы передать данные пути к объекту Heatmaps
и начать рендеринг тепловой карты. Вместо этого я хочу, чтобы мой Heatmaps
объект наблюдал и регистрировал данные случайного блуждания, как это происходит.
Некоторые возможности:
- Я мог бы сделать метод регистрации тепловой карты
public
и static
и вызвать этот метод из InitiateRandomWalk()
метода, но это было бы плохим дизайном.
- Я мог бы, чтобы InitiateRandomWalk () возвращал
IEnumerable
и yield return
каждый шаг, а затем передавал каждый шаг на Heatmaps
.
- Я мог бы передать объект
Heatmaps
методу InitiateRandomWalk()
в качестве параметра.
Какой дизайн / шаблон дизайна будет лучше?