Heim >Backend-Entwicklung >C++ >Das Prinzip „Erzählen, nicht fragen' in Sekundenschnelle erklärt
Das Tell, Don't Ask-Prinzip, ein Eckpfeiler der objektorientierten Programmierung (OOP), befürwortet die Gestaltung von Objekten, die sowohl ihre Daten als auch die Methoden, die diese Daten manipulieren, kapseln. Dieser Ansatz fördert wartbarere und robustere Systeme durch verbesserte Kapselung.
Das „Tell, Don't Ask“-Prinzip legt Wert darauf, Objekten Anweisungen zu geben, was sie tun sollen, anstatt ihre Daten abzurufen und extern zu verarbeiten. Es fördert die Beibehaltung von Logik und Zustand im Objekt selbst.
Anstatt auf die Daten eines Objekts zuzugreifen, um externe Entscheidungen zu treffen, weisen Sie das Objekt direkt an, eine interne Aktion auszuführen. Diese Strategie vereinfacht den Code, minimiert Abhängigkeiten und verbessert die Erweiterbarkeit und Wartbarkeit des Systems.
Untersuchen wir ein Szenario mit einem Sensorwert und einem Alarm, der ausgelöst wird, wenn dieser Wert einen Schwellenwert überschreitet.
<code>class AskMonitor { private int value; private int limit; private String name; private Alarm alarm; public AskMonitor(String name, int limit, Alarm alarm) { this.name = name; this.limit = limit; this.alarm = alarm; } public int getValue() { return value; } public void setValue(int value) { this.value = value; } public int getLimit() { return limit; } public String getName() { return name; } public Alarm getAlarm() { return alarm; } }</code>
Verwendung:
<code>AskMonitor monitor = new AskMonitor("Temperature Sensor", 100, alarm); monitor.setValue(120); if (monitor.getValue() > monitor.getLimit()) { monitor.getAlarm().warn(monitor.getName() + " is too high"); }</code>
Mit „Tell, Don't Ask“ wird das Verhalten in den Monitor
Unterricht integriert.
<code>class TellMonitor { private int value; private int limit; private String name; private Alarm alarm; public TellMonitor(String name, int limit, Alarm alarm) { this.name = name; this.limit = limit; this.alarm = alarm; } public void setValue(int value) { this.value = value; if (this.value > this.limit) { alarm.warn(name + " is too high"); } } }</code>
Verwendung:
<code>TellMonitor monitor = new TellMonitor("Temperature Sensor", 100, alarm); monitor.setValue(120);</code>
Die „Tell“-Version eliminiert die externe Entscheidungsfindung, indem die Logik innerhalb der setValue
-Methode gekapselt wird.
✅ Stärkere Kapselung: Daten und Verhalten sind eng miteinander verbunden.
✅ Prägnanter Code: Externe Logik wird durch Internalisierung des Verhaltens minimiert.
✅ Verbesserte Wartbarkeit: Einfachere Änderung und Erweiterung der Funktionalität.
✅ Gekapseltes Verhalten: Wenn ein Objekt von Natur aus weiß, wie es seine Daten verarbeitet.
Beispiel: Ein
Monitor
Objekt, das sich seiner Grenze bewusst ist, sollte bei Überschreitung dieser Grenze selbstständig einen Alarm auslösen.
✅ Zustandsgesteuerte Aktionen: Wenn Zustandsänderungen Folgeaktionen erfordern (z. B. Benachrichtigungen, Protokollierung).
Beispiel: Ein
UserProfile
-Objekt aktualisiert automatisch ein Aktivitätsprotokoll bei Profiländerungen.
✅ Datenabruf: Wenn Daten benötigt werden, ohne den Zustand des Objekts zu ändern.
Beispiel:Abrufen der E-Mail-Adresse eines
User
Objekts.
✅ Externe Entscheidungsfindung:Wenn Entscheidungen auf externen Faktoren beruhen.
Beispiel:Einholen des Namens eines
Person
, um äußerlich eine passende Begrüßung zu bestimmen.
✅ Verantwortungsdelegation: Wenn Objekte zusammenarbeiten und eines Daten von einem anderen zur Entscheidungsfindung benötigt.
Beispiel: Ein
Router
, der die Auslastung einesServer
für das Verkehrsmanagement abfragt.
Interessiert? ? Entdecken Sie andere Beiträge in meiner Reihe zu Programmierprinzipien!
Bleiben Sie über zukünftige Beiträge auf dem Laufenden:
Das obige ist der detaillierte Inhalt vonDas Prinzip „Erzählen, nicht fragen' in Sekundenschnelle erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!