Objektorientierung: DAO-Factory
-
Hi Leute!
Ich hab hier mal eine theoretische Frage zu der DAO-Factory-Pattern.
Die Frage: Welches Problem wird durch den Einsatz einer solchen Factory gelöst?
Ich hab mich natürlich auch schon vorher informiert und auf diese zwei Vorteile gestoßen: 1. konkrete Klassen werden isoliert und 2. Austausch von Produktfamilien ist auf einfache Art und Weise möglich.
Aber welches Problem (wie oben geschrieben) wird dadurch nun gelöst? Ich komm leider nicht drauf...
Könnt ihr mir weiterhelfen?
-
DAO und Factory sind eigentlich zwei getrennte Pattern. Kombiniert lösen die beiden dann das Problem, dass abhängig vom Input ein anderes Data-Access-Object zurückgegeben wird, ohne dass sich der Anwender der Factory sorgen machen muss, dass für den passenden Input tatsächlich der passende Output geliefert wird.
Beispielsweise habt ihr in eurem System zwei DAOs: Einen Typ für Datenbankzugriffe, und einen Typ für Zugriffe direkt aus irgendwelchen Textdateien auf der Festplatte. Dann schreibt ihr entweder
Dao *myDao = DaoFactory.getFittingDAO("192.168.0.2:22222"); cout<<myDao->getUser("heinz")->age;
oder
Dao *myDao = DaoFactory.getFittingDAO("text.txt"); cout<<myDao->getUser("heinz")->age;
Die konkreten Argumente können natürlich von einer GUI oder sonstwas anderem zur Laufzeit kommen und vom Benutzer "live" bestimmt werden. Trotzdem funktionierts prima, und es ist auch sehr komfortabel neue Zugriffsmethoden hinzuzufügen.