Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface MultiDoc
Интерфейсный MultiDoc обеспечивает абстракцию, подобную "связанному списку" документов. Объект мультидокумента походит на узел в связанном списке, содержа текущий документ в списке и указателе на следующий узел (мультидокумент) в списке. Задание Печати может вызвать мультидокумент
метод, чтобы получить текущий документ. Когда это готово продолжиться к следующему документу, Задание Печати может вызвать мультидокумент getDoc()
метод, чтобы получить следующий мультидокумент, который содержит следующий документ. Таким образом, код Задания Печати для того, чтобы получить доступ к мультидокументу мог бы быть похожим на это: next()
void processMultiDoc(MultiDoc theMultiDoc) { MultiDoc current = theMultiDoc; while (current != null) { processDoc (current.getDoc()); current = current.next(); } }
Конечно, интерфейсный MultiDoc может быть реализован всегда, который выполняет контракт; это не должно использовать связанный список в реализации.
Чтобы получить все данные печати для задания печати мультидокумента, прокси Службы печати мог использовать любой из двух образцов:
Чтобы рассмотреть эту проблему, и упростить проект клиентов, обеспечивающих многократные документы Заданию Печати, каждый прокси Службы печати, который поддерживает задания печати мультидокумента, обязан получать доступ к объекту MultiDoc использование чередованного образца. Таким образом, учитывая объект MultiDoc, прокси службы печати вызовет
один или более раз, пока это успешно не получает текущий объект Документа. Прокси службы печати тогда получит данные печати текущего документа, не продолжаясь, пока все данные печати не будут получены, или неисправимая ошибка происходит. Если это будет в состоянии продолжаться, то прокси службы печати тогда вызовет getDoc()
один или более раз, пока это успешно не получает или следующий объект MultiDoc или индикацию, что нет больше. Реализация интерфейсного MultiDoc может предположить, что прокси службы печати будет следовать за этим чередованным образцом; для любого другого образца использования поведение реализации MultiDoc является неуказанным. next()
Нет никакого ограничения на число клиентских потоков, которые могут одновременно получать доступ к тому же самому мультидокументу. Поэтому, все реализации интерфейсного MultiDoc должны быть разработаны, чтобы быть многократны ориентированный на многопотоковое исполнение. Фактически, клиентский поток мог добавлять документы до конца (концептуального) списка, в то время как поток Задания Печати одновременно получает документы с начала списка; если объект мультидокумента синхронизирует потоки должным образом, два потока не будут вмешиваться друг в друга
Doc getDoc() throws IOException
IOException
- Брошенный, если ошибка ocurred чтение документа.MultiDoc next() throws IOException
IOException
- Брошенный, если ошибка произошла, определяя местоположение следующего документа
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.