Estou lendo C # Design Pattern Essentials . Atualmente, estou lendo sobre o padrão do iterador.
Compreendo perfeitamente como implementar, mas não entendo a importância ou vejo um caso de uso. No livro, é apresentado um exemplo em que alguém precisa obter uma lista de objetos. Eles poderiam ter feito isso expondo uma propriedade pública, como IList<T>
ou Array
.
O livro escreve
O problema é que a representação interna em ambas as classes foi exposta a projetos externos.
Qual é a representação interna? O fato de ser um array
ou IList<T>
? Eu realmente não entendo por que isso é uma coisa ruim para o consumidor (o programador chamando isso) saber ...
O livro então diz que esse padrão funciona expondo sua GetEnumerator
função, para que possamos chamar GetEnumerator()
e expor a 'lista' dessa maneira.
Presumo que esses padrões tenham um lugar (como todos) em determinadas situações, mas não consigo ver onde e quando.
F
que me dê conhecimento (métodos) de a
, b
e c
. Tudo está bem, pode haver muitas coisas diferentes, mas são apenas F
para mim. Pense no método como "restrições" ou cláusulas de um contrato que as F
classes comprometam a fazer. Suponha que adicionemos um d
porém, porque precisamos dele. Isso adiciona uma restrição adicional, cada vez que fazemos isso, impomos mais e mais aos F
s. Eventualmente (na pior das hipóteses), apenas uma coisa pode ser uma, F
então podemos também não tê-la. E F
restringe tanto que há apenas uma maneira de fazê-lo.