Материалы книги получены с http://www.itlibitum.ru/
Что лучше?
Выбор между активными и пассивными итераторами в основном зависит от стиля, но я предпочитаю активные итераторы по нескольким причинам:
Законченный класс итератора проще использовать повторно, чем пару функций большого
класса.
Рано или поздно вам захочется предоставить несколько разных способов перебора содержимого коллекции. Один и тот же общий интерфейс класса Iterator подойдет для любого способа, а в форме функций класса для каждого типа перебора вам придется создавать пару новых функций.
Пассивные итераторы не имеют открытого интерфейса, однако клиентские объекты видят их через адреса. Это выглядит довольно странно.
При равенстве всех остальных показателей я обычно предпочитаю активные итераторы,
поскольку они обеспечивают лучшую инкапсуляцию.
В коммерческих библиотеках классов можно встретить хорошие примеры обеих форм. В вопросе об активных и пассивных итераторах отражается общий спор об активных и пассивных объектах, поэтому в первую очередь следует учитывать собственные приемы проектирования.
Назад Содержание Далее
|