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