Czytam C # Design Pattern Essentials . Obecnie czytam o wzorze iteratora.
W pełni rozumiem, jak wdrożyć, ale nie rozumiem znaczenia ani nie widzę przypadku użycia. W książce podano przykład, w którym ktoś musi uzyskać listę obiektów. Mogli to zrobić, ujawniając własność publiczną, taką jak IList<T>
lub Array
.
Książka pisze
Problem polega na tym, że wewnętrzna reprezentacja w obu tych klasach była narażona na zewnętrzne projekty.
Jaka jest wewnętrzna reprezentacja? Fakt, że to jest array
lub IList<T>
? Naprawdę nie rozumiem, dlaczego jest to złe dla konsumenta (programisty nazywającego to) wiedzieć ...
Książka mówi następnie, że ten wzorzec działa, ujawniając jego GetEnumerator
funkcję, dzięki czemu możemy wywoływać GetEnumerator()
i wyświetlać „listę” w ten sposób.
Zakładam, że te wzorce mają miejsce (jak wszystkie) w pewnych sytuacjach, ale nie widzę, gdzie i kiedy.
F
, który daje mi wiedzę (sposobami) a
, b
a c
. Wszystko jest dobrze i dobrze, może być wiele rzeczy, które są różne, ale tylko F
dla mnie. Pomyśl o metodzie jako o „ograniczeniach” lub klauzulach umowy, które F
zobowiązują klasy do działania. Załóżmy, że dodajemy d
jednak, ponieważ go potrzebujemy. Dodaje to dodatkowe ograniczenie, za każdym razem, gdy to robimy, nakładamy coraz więcej na F
s. W końcu (najgorszy przypadek) może być tylko jedna rzecz, F
więc równie dobrze możemy jej nie mieć. I F
ogranicza tak bardzo, że jest tylko jeden sposób, aby to zrobić.