Я читаю C # Design Pattern Essentials . В настоящее время я читаю о шаблоне итератора.
Я полностью понимаю, как реализовать, но я не понимаю важность или вижу вариант использования. В книге приведен пример, где кто-то должен получить список объектов. Они могли бы сделать это, выставив публичную собственность, такую как IList<T>или Array.
Книга пишет
Проблема с этим заключается в том, что внутреннее представление в обоих этих классах подвергалось внешним проектам.
Что такое внутреннее представление? Факт это arrayили IList<T>? Я действительно не понимаю, почему это плохо для потребителя (программиста, вызывающего это) знать ...
Затем в книге говорится, что этот шаблон работает, выставляя его GetEnumeratorфункцию, поэтому мы можем вызывать GetEnumerator()и выставлять «список» таким образом.
Я предполагаю, что этот шаблон имеет место (как и все) в определенных ситуациях, но я не вижу, где и когда.
Fкоторый дает мне знания (методы) a, bи c. Все хорошо, может быть много разных вещей, но только Fдля меня. Думайте о методе как о «ограничениях» или предложениях контракта, которые Fобязывают классы делать. Предположим, что мы добавили dхотя, потому что нам это нужно. Это добавляет дополнительное ограничение, каждый раз, когда мы делаем это, мы навязываем все больше и больше F. В конце концов (в худшем случае) может быть только одна вещь, Fпоэтому мы можем не иметь ее. И Fограничивает настолько, что есть только один способ сделать это.