Sto leggendo C # Design Pattern Essentials . Attualmente sto leggendo il modello iteratore.
Comprendo appieno come implementare, ma non capisco l'importanza o non vedo un caso d'uso. Nel libro viene fornito un esempio in cui qualcuno deve ottenere un elenco di oggetti. Avrebbero potuto farlo esponendo una proprietà pubblica, come IList<T>
o un Array
.
Il libro scrive
Il problema è che la rappresentazione interna in entrambe queste classi è stata esposta a progetti esterni.
Qual è la rappresentazione interna? Il fatto è un array
o IList<T>
? Davvero non capisco perché questa sia una brutta cosa per il consumatore (il programmatore lo chiama) per sapere ...
Il libro dice quindi che questo modello funziona esponendo la sua GetEnumerator
funzione, quindi possiamo chiamare GetEnumerator()
ed esporre la 'lista' in questo modo.
Presumo che questo schema abbia un posto (come tutti) in certe situazioni, ma non riesco a vedere dove e quando.
F
che mi dia conoscenza (metodi) di a
, b
e c
. Va tutto bene, ci possono essere molte cose diverse ma solo F
per me. Pensa al metodo come "vincoli" o clausole di un contratto che le F
classi impegnano a fare. Supponiamo di aggiungere un d
però, perché ne abbiamo bisogno. Questo aggiunge un ulteriore vincolo, ogni volta che lo facciamo imponiamo sempre di più sulla F
s. Alla fine (nel peggiore dei casi) solo una cosa può essere una, F
quindi potremmo anche non averla. E F
limita così tanto che c'è solo un modo per farlo.