Вкратце: весь код, основанный на базовом представлении, будет иметь, который будет изменен, если вы решите изменить представление.
Например, вы решили сначала использовать TreeMap
, но тогда вы больше не хотите заказывать (в большинстве случаев), поэтому вы меняете на HashMap
. Кто-то зацикливается на вашей карте, пытаясь получить все больший список. !!
Использование шаблона итератора, вы всегда можете дать пользователю возможность прокручивать что-то с помощью определенной логики (или просто случайной, что является своего рода логикой), не зная, что находится под капотом.
Теперь, если вы используете HashMap
вместо TreeMap
, вы можете просмотреть отсортированное представление для пользователя.Если вы сообщите об этом SortedIterator
и сообщите пользователю, «используя это, вы гарантируете, что результат будет отсортирован, но я ничего не могу сказать о том, что находится под ним», вы можете изменить представление так, как вам нравится, если контракт этого SortedIterator
поддерживается вами.
Короче говоря, вы (пользователь) используете 'Iterator' одинаково для' ArrayList', 'HashMap',' HashSet', 'TreeSet'. Вы не заботитесь о реализации за –