Ответ на этот вопрос должен зависеть от области, для которой реализовано решение.
Если вам случится симулировать физический поиск в физическом стоге сена, у вас могут быть классы
- Пробел
- Солома
- игла
- Искатель
Space
знает, какие объекты находятся в каких координатах
реализует законы природы (преобразует энергию, обнаруживает столкновения и т. д.)
Игла , Солома
расположены в пространстве
реагировать на силы
Искатель
взаимодействует с пространством:
двигает рукой, применяет магнитное поле, сжигает сено, применяет рентген, ищет иголку ...
Таким образом seeker.find(needle, space)
или seeker.find(needle, space, strategy)
Стог сена просто случается в том месте, где вы ищете иглу. Когда вы абстрагируете пространство как виртуальную машину (представьте: матрицу), вы можете получить вышеупомянутое с помощью стога сена вместо пространства (решение 3 / 3b) :
seeker.find(needle, haystack)
или seeker.find(needle, haystack, strategy)
Но матрица была Доменом, который должен быть заменен только стогом сена, если ваша игла не могла быть где-либо еще.
И опять же, это была просто анология. Интересно, что это открывает разум для совершенно новых направлений:
1. Почему вы потеряли иглу в первую очередь? Можете ли вы изменить процесс, чтобы не потерять его?
2. Вам нужно найти потерянную иглу или вы можете просто взять другую и забыть о первой? (Тогда было бы неплохо, если бы игла через некоторое время растворилась)
3. Если вы регулярно теряете иглы и вам нужно их снова найти, то вы можете
делают иглы, которые могут найти себя, например, они регулярно спрашивают себя: я потерялся? Если ответ «да», они посылают кому-то свое вычисленное GPS-положение или начинают пискать или что-то еще:
needle.find(space)
или needle.find(haystack)
(решение 1)
установите стог сена с камерой на каждую соломинку, после чего вы можете спросить улей стога сена, видел ли он в последнее время иглу:
haystack.find (игла) (раствор 2)
прикрепите метки RFID к иглам, чтобы их можно было легко триангулировать
Это все лишь для того, чтобы сказать, что в вашей реализации вы сделали иголку и стог сена и большую часть времени матрицу на каком-то уровне.
Так что решайте по вашему домену:
- Это цель стога сена, чтобы содержать иглы? Затем перейдите к решению 2.
- Естественно, что игла теряется где-нибудь? Затем перейдите к решению 1.
- Случайно ли теряется игла в стоге сена? Затем перейдите к решению 3. (или рассмотрите другую стратегию восстановления)