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 arraylub 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 GetEnumeratorfunkcję, 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, ba c. Wszystko jest dobrze i dobrze, może być wiele rzeczy, które są różne, ale tylko Fdla mnie. Pomyśl o metodzie jako o „ograniczeniach” lub klauzulach umowy, które Fzobowiązują klasy do działania. Załóżmy, że dodajemy djednak, ponieważ go potrzebujemy. Dodaje to dodatkowe ograniczenie, za każdym razem, gdy to robimy, nakładamy coraz więcej na Fs. W końcu (najgorszy przypadek) może być tylko jedna rzecz, Fwięc równie dobrze możemy jej nie mieć. I Fogranicza tak bardzo, że jest tylko jeden sposób, aby to zrobić.