nein, ähm...
angenommen man hat eine ( physikalische *g* ) Fabrik mit mehreren Maschinen und will diese über ein Objektorientiertes Programm steuern.
Nach dem OOP-Prinzip würde man hier eine Klasse "Maschine" anlegen
die genau eine einzige Maschine in der Fabrik steuert.
Jede Maschine wäre durch genau eine Instanz dieser Klasse repräsentiert.
Wenn man eine Managerklasse dafür nimmt,
würde man die Klasse "MaschinenManager" schreiben und es würde nur eine einzige Instanz dieser Klasse während des gesamten Laufzeit existoeren.
Dann müsste man jeder Maschine eine eindeutige ID (meistens integer) zuweisen.
Die Methoden zum steuern der Maschinen sind alle in der Manager-Klasse,
und um die zu steuernde Maschine zu wählen übergibt man die ID mit als Parameter zu dieser Methode.
Also statt dem normalen OOP-Weg...
Code:
...
maschine_A = new Maschine(1); // hole Maschine mit ID 1 als "maschine_A"
maschine_B = new Maschine(2); // hole Maschine mit ID 2 als "maschine_B"
maschine_C = new Maschine(3); // hole Maschine mit ID 3 als "maschine_C"
maschine_A.starte(); // starte Maschine mit ID 1
maschine_B.starte(); // starte Maschine mit ID 2
maschine_C.starte(); // starte Maschine mit ID 3
...
maschine_B.schneller(5); // beschleunige Maschine mit ID 2 um 5
...
...schreibt man etwas in die Richtung:
Code:
...
maschinen = new MaschinenManager();
maschinen_manager.starte(1); // starte Maschine mit ID 1
maschinen_manager.starte(2); // starte Maschine mit ID 2
maschinen_manager.starte(3); // starte Maschine mit ID 3
...
maschinen_manager.schneller(2, 5); // beschleunige Maschine mit ID 2 um 5
...
Das dieser Weg dem eigentlichen Sinn des OOP etwas entgegensteht weiss ich selbst,
doch trotzdem sehe ich solche Konstrukte immer häufiger.
Oft sind diese Manager dann auch so gebaut das sie Global verfügbar sind.
(z.B.: über einen "Obermanager" (Factory?), welcher Referenzen auf alle anderen Manager enthält und an jede Klasse weitergereicht wird.)
Ein Vorteil den ich mir vorstellen könnte wäre es das man nicht mehr irgendwo Instanzen herumfliegen hat die beim Programmieren nicht beachtet werden sondern alles was zusammen gehört an einer Stelle hat.
MfG
GU4RDI4N
Lesezeichen