Welchen Zweck hat dieser Ansatz für den Zugriff auf Modifikatoren?

7

Betrachten Sie den folgenden Code:

%Vor%

Was bewirkt das, dass die öffentlichen Mitglieder allein nicht hätten?

    
John Straka 24.04.2012, 16:01
quelle

5 Antworten

10

Wenn Sie Eigenschaften anstelle von öffentlichen Feldern verwenden, blenden Sie die Implementierung aus.

Wenn Sie an einem bestimmten Punkt die Eigenschaften von Text und Werten ändern müssen, können Sie das Verhalten ändern, ohne die API der Klasse zu ändern.

Darüber hinaus beschränkt dieses Idiom den externen Zugriff auf die exponierten Daten als schreibgeschützt.

    
Luca Geretti 24.04.2012, 16:03
quelle
6

Es ist, Werte nur zu lesen, obwohl ich eher geneigt wäre, es so zu schreiben:

%Vor%     
asawyer 24.04.2012 16:03
quelle
5

Dieser Code würde es externen Entitäten ermöglichen, Ihre Werte zu lesen, während Ihr Code das Backing-Feld intern ändern könnte.

Sie können das mit den Auto-Eigenschaften kurzschließen:

%Vor%

Mit einem öffentlichen Feld wären Sie nicht in der Lage, sich vor externen Änderungen zu schützen und gleichzeitig interne Änderungen zu unterstützen.

Selbst wenn Sie ein Feld extern beschreibbar machen möchten, würde ich dennoch vorschlagen, das Ding in eine Eigenschaft zu kapseln - Sie wissen nie, ob Sie intern etwas unterstützen müssen, ohne den externen Vertrag zu brechen (benutzerdefinierter Code im set / get gibt an) Sie Platz, um dies zu tun).

Ganz zu schweigen von den meisten Datenbindungs-Frameworks, die keine Felder sehen, nur Eigenschaften.

    
Adam Houldsworth 24.04.2012 16:03
quelle
2

Die _text und _values können nur innerhalb der Klasse festgelegt werden, für die sie definiert sind, aber ihre Werte sind über die Eigenschaften zugänglich.

    
Neil Knight 24.04.2012 16:03
quelle
2

In Ihrem Beispiel werden die Eigenschaften nur als gelesen dargestellt, aber es gibt auch andere Verwendungszwecke.

%Vor%

Wenn Sie einige Operationen intern in return_text durchführen und dann gegen proeperty Text zurückgeben möchten, könnten Sie etwas ähnliches tun.

%Vor%

Dies ist das Feld Kapselung

  

Verkapselung wird manchmal als die erste Säule oder bezeichnet   Prinzip der objektorientierten Programmierung. Nach dem Prinzip   der Verkapselung kann eine Klasse oder Struktur angeben, wie auf welche zugegriffen werden kann   Seine Mitglieder sollen außerhalb der Klasse oder Struktur codieren. Methoden und   Variablen, die nicht von außerhalb der Klasse verwendet werden sollen   oder Assembly kann versteckt werden, um das Potenzial für Codierungsfehler zu begrenzen oder   bösartige Exploits.

Betrachten Sie das folgende Beispiel:

%Vor%

In diesem Beispiel gibt es ein privates Feld date , das öffentlich über die Eigenschaft Date verfügbar gemacht wird. Wenn Sie jetzt die Grenze für das Datum festlegen möchten, können Sie den festgelegten Teil der Eigenschaft sehen.

    
Habib 24.04.2012 16:18
quelle

Tags und Links