Рассмотрите объект, который извлекает значения объекта из источника на основе «pull» до тех пор, пока не встретится специальное значение (например, null
).Шаблон проектирования для последующего экстрактора значений объектов
В Java
, то API может быть что-то вроде
public interface ValueExtractor<T> {
public T extractNext();
}
операционально, это Iterator
, но он имеет только (вроде) «следующего()» метод и не является Reader
, так как он не чтение из исходного байта. Он также напоминает курсор базы данных в том смысле, что он «прокручивает» все значения данных (записи), пока они не исчерпаны.
Есть ли шаблон дизайна, отличный от «итератора» для этого прецедента?
Что было бы лучшим именем для вызова такого простого объекта?
Почему не итератор? Похоже на меня. – dnault
В терминах 'Java' он не имеет метода' hasNext() 'или' remove() '. Это «частичный» итератор. :-) – PNS
remove() - необязательная операция. Просто выберите UnsupportedOperationException(). Для hasNext() вы можете извлечь следующее значение и буферизировать его, чтобы последующий вызов next() возвращал буферное значение. – dnault