Heim >Backend-Entwicklung >C++ >Das Prinzip „Erzählen, nicht fragen' in Sekundenschnelle erklärt

Das Prinzip „Erzählen, nicht fragen' in Sekundenschnelle erklärt

Linda Hamilton
Linda HamiltonOriginal
2025-01-19 10:03:10469Durchsuche

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.


? „Erzählen, nicht fragen“ verstehen

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.


?‍?‍? Beispiel: Sensorwertüberwachung

Untersuchen wir ein Szenario mit einem Sensorwert und einem Alarm, der ausgelöst wird, wenn dieser Wert einen Schwellenwert überschreitet.

Der „Ask“-Ansatz

<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>

Der „Tell“-Ansatz

Mit „Tell, Don't Ask“ wird das Verhalten in den MonitorUnterricht 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.


⭐ Vorteile von „Erzählen, nicht fragen“

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.


? Wann „erzählen“ sollte

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.


? Wann man „fragen“ sollte

Datenabruf: Wenn Daten benötigt werden, ohne den Zustand des Objekts zu ändern.

Beispiel:Abrufen der E-Mail-Adresse eines UserObjekts.

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 eines Server für das Verkehrsmanagement abfragt.


? Verwandte Ressourcen

Interessiert? ? Entdecken Sie andere Beiträge in meiner Reihe zu Programmierprinzipien!

  • KISS-Designprinzip in 100 Sekunden erklärt
  • DRY-Prinzip in 100 Sekunden erklärt

Bleiben Sie über zukünftige Beiträge auf dem Laufenden:

  • Linkedin
  • Github
  • Twitter/X

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn