Frage bezüglich OOP

Zespire

Lieutenant
Registriert
März 2007
Beiträge
857
Sagen wir ich habe eine Main class die ein bool hat Licht an/aus und eine Liste von Personen.

Option a in der Main wird beim update jede Person gefragt ob sie das Licht an macht.

Option b die Person sagt der main klasse beim update das das Licht eingeschaltet wurde.

Habe das immer intuitiv entschieden nun stellt sich mir die Frage ob es da ein richtig oder falsch gibt in Sachen OOP.
 
glaube mit dem reduzierten beispiel gibt es bei den beiden patterns kein klares falsch oder richtig.

im allgemeinen ist es offensichtlich sinnvoller, wenn aktoren, etwa eine person, mit einem gemeinsamen objekt "raum" interagieren und dessen licht-status manipulieren. das ist insbesondere sinnvoll in multithreading-situationen, wo man den zugriff auf den lichzustand leichter synchronisieren kann und thread-lokales variablencaching in der anderen variante fuer problematischere komplexitaet sorgen koennte.

genausogut kann es aber auch deutlich mehr sinn ergeben, ein polling aller personen von seiten des raumes auszufuehren, etwa wenn ich ein spiel mit grafischer ausgabe schreibe und fuer jeden tick (= 1 berechneter frame) darin demokratisch unter allen personen entscheiden will, ob das licht an oder ausgeschalten wird.
das ist jetzt zugegebenermassen etwas kuenstlich konstruiert, aber derartige situationen gibt es sicher.
 
Option A nennt sich wie bog schon sagte "Polling".
Option B ist dagegen das normale Messaging zwischen Objekten.

Es ist deine Aufgabe zu entscheiden welcher Ansatz sinnvoller ist, technisch sind beide möglich.
Stell dir aber vor wie so eine Situation im echten Leben aussehen würde: Fragt mich der Lichtschalter alle 2 Sekunden ob er das Licht an bzw. ausmachen soll? Oder betätige ich den Schalter wenn ich Licht an bzw. ausmachen will?
 
Zuletzt bearbeitet:
Wie gesagt von Fall zu Fall anders ich habe extra ein einfaches Beispiel genommen um das ganze nicht in eine Richtung zu drängen.

Also prinzipiell würde es keine Abzüge in der B Note geben wen man Option a oder b bevorzugt solange sie gleich geeignet sind.

Allemal Danke für die antworten.
 
Da musst du allerdings aufpassen, in deinem einfachen Beispiel sind zwar beide Lösungen möglich, aber keineswegs beide genauso gut dafür geeignet.

Man kann Brot mit einem Messer oder mit einem Löffel schneiden, beides ist technisch möglich. ;)
 
Polling kostet bei dem Beispiel Rechenzeit und skaliert bei größeren Datenmengen schlecht. Wenn du jetzt 7 Milliarden Menschen hast und jeden einzelnen davon fragst, ob er das Licht angemacht hat, bist du ein paar Sekunden beschäftigt - mit dem zweiten Ansatz kannst du noch viel mehr Menschen haben, ohne dass die CPU-Geschwindigkeit zum Problem wird.
 
Ich ging davon aus das alle Personen bei jedem Tick ein update bekommen :).

In deinem Beispiel wäre Option B klar von Vorteil und die Frage überflüssig.
 
Zurück
Oben