Estoy leyendo C # Design Pattern Essentials . Actualmente estoy leyendo sobre el patrón iterador.
Entiendo completamente cómo implementar, pero no entiendo la importancia o veo un caso de uso. En el libro se da un ejemplo donde alguien necesita obtener una lista de objetos. Podrían haber hecho esto exponiendo una propiedad pública, como IList<T>
o una Array
.
El libro escribe
El problema con esto es que la representación interna en ambas clases ha sido expuesta a proyectos externos.
¿Qué es la representación interna? El hecho de que es un array
o IList<T>
? Realmente no entiendo por qué esto es algo malo para el consumidor (el programador lo llama) para saber ...
El libro luego dice que este patrón funciona al exponer su GetEnumerator
función, por lo que podemos llamar GetEnumerator()
y exponer la 'lista' de esta manera.
Supongo que estos patrones tienen un lugar (como todos) en ciertas situaciones, pero no veo dónde y cuándo.
F
que me da conocimiento (métodos) de a
, b
y c
. Todo está bien, puede haber muchas cosas diferentes pero solo F
para mí. Piense en el método como "restricciones" o cláusulas de un contrato que F
obliga a las clases a hacer. Supongamos que agregamos un d
, porque lo necesitamos. Esto agrega una restricción adicional, cada vez que hacemos esto, imponemos más y más en el F
s. Eventualmente (en el peor de los casos), solo una cosa puede ser, F
por lo que bien podríamos no tenerla. Y F
limita tanto que solo hay una forma de hacerlo.