Ich lese C # Design Pattern Essentials . Ich lese gerade über das Iteratormuster.
Ich verstehe die Implementierung vollständig, verstehe aber nicht die Wichtigkeit oder sehe keinen Anwendungsfall. In dem Buch wird ein Beispiel gegeben, in dem jemand eine Liste von Objekten abrufen muss. Sie hätten dies tun können, indem sie ein öffentliches Eigentum, wie zum Beispiel IList<T>
oder ein Array
.
Das Buch schreibt
Das Problem dabei ist, dass die interne Repräsentation in beiden Klassen externen Projekten ausgesetzt war.
Was ist die interne Darstellung? Die Tatsache, dass es einarray
oder IList<T>
? Ich verstehe wirklich nicht, warum dies für den Verbraucher (den Programmierer, der dies nennt) eine schlechte Sache ist, zu wissen ...
Das Buch sagt dann, dass dieses Muster funktioniert, indem es sein herausstellt GetEnumerator
Funktion , so dass wir GetEnumerator()
die 'Liste' auf diese Weise aufrufen und aufdecken können.
Ich gehe davon aus, dass dieses Muster (wie alle) in bestimmten Situationen einen Platz hat, aber ich sehe nicht, wo und wann.
F
das gibt mir Wissen (Methoden) von a
, b
und c
. Alles ist gut und schön, es kann viele Dinge geben, die anders sind, aber nur F
für mich. Stellen Sie sich die Methode als "Einschränkungen" oder Klauseln eines Vertrags vor F
, zu denen Klassen verpflichtet sind. Nehmen wir an, wir fügen ein d
zwar hinzu, weil wir es brauchen. Dies fügt eine zusätzliche Einschränkung hinzu. Jedes Mal, wenn wir dies tun, legen wir den F
s mehr und mehr auf . Letztendlich (im schlimmsten Fall) kann nur eine Sache eine sein, F
also können wir es genauso gut nicht haben. Und F
es gibt so viele Einschränkungen, dass es nur einen Weg gibt, dies zu tun.