Die Antwort auf diese Frage sollte tatsächlich von der Domäne abhängen, für die die Lösung implementiert ist.
Wenn Sie zufällig eine physische Suche in einem physischen Heuhaufen simulieren, haben Sie möglicherweise die Klassen
Der Raum
weiß, welche Objekte sich an welchen Koordinaten befinden,
setzt die Naturgesetze um (wandelt Energie um, erkennt Kollisionen usw.)
Nadel , Stroh
befinden sich im Weltraum und
reagieren auf Kräfte
Sucher
interagiert mit dem Raum:
bewegt die Hand, legt ein Magnetfeld an, verbrennt Heu, legt Röntgenstrahlen an, sucht nach einer Nadel ...
So seeker.find(needle, space)
oder seeker.find(needle, space, strategy)
Der Heuhaufen befindet sich zufällig in dem Bereich, in dem Sie nach der Nadel suchen. Wenn Sie den Raum als eine Art virtuelle Maschine abstrahieren (denken Sie an: die Matrix), können Sie das Obige mit Heuhaufen anstelle des Raums erhalten (Lösung 3 / 3b) :
seeker.find(needle, haystack)
oder seeker.find(needle, haystack, strategy)
Aber die Matrix war die Domäne, die nur durch Heuhaufen ersetzt werden sollte, wenn Ihre Nadel nirgendwo anders sein konnte.
Und andererseits war es nur eine Anologie. Interessanterweise öffnet dies den Geist für völlig neue Richtungen:
1. Warum haben Sie die Nadel überhaupt verloren? Können Sie den Prozess ändern, damit Sie ihn nicht verlieren?
2. Müssen Sie die verlorene Nadel finden oder können Sie einfach eine andere bekommen und die erste vergessen? (Dann wäre es schön, wenn sich die Nadel nach einer Weile auflösen würde.)
3. Wenn Sie Ihre Nadeln regelmäßig verlieren und sie wiederfinden müssen, möchten Sie vielleicht
mache Nadeln, die sich selbst finden können, zB fragen sie sich regelmäßig: Bin ich verloren? Wenn die Antwort Ja lautet, senden sie ihre GPS-berechnete Position an jemanden oder beginnen zu piepen oder was auch immer:
needle.find(space)
oder needle.find(haystack)
(Lösung 1)
Installieren Sie einen Heuhaufen mit einer Kamera auf jedem Strohhalm. Anschließend können Sie den Heuhaufen-Bienenstock fragen, ob er die Nadel in letzter Zeit gesehen hat:
haystack.find (Nadel) (Lösung 2)
Bringen Sie RFID-Tags an Ihren Nadeln an, damit Sie sie leicht triangulieren können
Das ist alles nur zu sagen , dass in Ihrem Implementierung Sie die Nadel gemacht und die Heuhaufen und die meiste Zeit , die Matrix auf irgendeine Art von Niveau.
Entscheiden Sie sich also entsprechend Ihrer Domain:
- Ist es der Zweck des Heuhaufens, Nadeln zu enthalten? Dann gehen Sie zu Lösung 2.
- Ist es natürlich, dass die Nadel irgendwo verloren geht? Dann gehen Sie zu Lösung 1.
- Geht die Nadel versehentlich im Heuhaufen verloren? Dann gehen Sie zu Lösung 3. (oder erwägen Sie eine andere Wiederherstellungsstrategie)
string.join
Methode).