Для меня это звучит так, как в описанной вами конкретной ситуации, это может быть прекрасный дизайн ОО.
Вкратце, ОО - это объединение
- состояние
- поведение
- (личность).
Всякий раз, когда у вас есть данные, которые представляют состояние (часть) системы, и у вас есть поведение, связанное с (обычно манипулирующее) этимданные, у вас есть кандидат на объект.Необязательно, эти объекты также могут иметь идентичность, но это может быть не всегда необходимо.
Если у вас есть несколько различных критериев для выбора областей интересов из набора данных, вы можете реализовать их как отдельные *Finder
классы, реализующие общий базовый интерфейс.Там у вас есть иерархия классов ОО!С этого момента Искатели могут даже использоваться в вашем коде как взаимозаменяемые Стратегии .
В качестве альтернативы можно было бы добавить функциональность Искателя в набор данных.Это может быть в порядке, если вы абсолютно уверены, что у вас не будет более разных критериев для извлечения регионов.Даже в этом случае ваш набор данных имеет две разные обязанности, что, как правило, не очень хорошая идея.Лучше, чтобы каждый класс отвечал за одну вещь и делал это хорошо.
Мы не знаем, что вы должны делать с данными в массивах - может быть некоторая возможность найти большетам есть абстракции и на них тоже строятся некоторые типы ОО и объекты.
Обратите внимание, что это всего лишь возможности.Внедряйте их только в том случае, если они действительно полезны (для решения проблем, упрощения кода или, что не менее важно, для получения практического опыта работы с новыми концепциями).