|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface MultiDoc
介面 MultiDoc 指定某個物件的介面,該物件為 PrintJob 提供多部分列印資料。"Doc" 是一個簡短、易於發音的術語,指“部分列印資料”,而 "multidoc" 指一組多個 doc。客戶端向 PrintJob 傳遞一個實作了介面 MultiDoc 的物件,PrintJob 則在該物件上調用方法來獲得列印資料。
介面 MultiDoc 提供了類似於多個 doc“連接列表”的抽象概念。一個 multidoc 物件就像該連接列表中的一個節點,包含列表中的當前 doc 和一個指向列表中下一個節點 (multidoc) 的指針。PrintJob 可以調用 multidoc 的
方法來獲得當前的 doc。當轉至下一個 doc 時,PrintJob 可以調用 multidoc 的 getDoc()
方法來獲得下一個 multidoc,它包含下一個 doc。所以存取 multidoc 的 PrintJob 程式碼可能如下所示:
next()
void processMultiDoc(MultiDoc theMultiDoc) { MultiDoc current = theMultiDoc; while (current != null) { processDoc (current.getDoc()); current = current.next(); } }
當然,可以滿足協定的任意方式來實作介面 MultiDoc;不必在實作中使用連接列表。
要獲得 multidoc PrintJob 的所有列印資料,PrintService 代理可以使用以下兩種網要:
為了解決此問題並簡化客戶端向 PrintJob 提供多個 doc 的設計,必需讓所有支持 multidoc PrintJob 的 PrintService 代理使用 interleaved 網要來存取 MultiDoc 物件。也就是說,如果給定了 MultiDoc 物件,則 PrintService 代理將調用
一次或多次,直到它成功獲得當前 Doc 物件為止。然後 PrintService 代理將獲得當前 doc 的列印資料,在獲得所有列印資料或出現不可恢復的錯誤之前,不會執行其他操作。如果能夠繼續執行其他操作,那麼在 PrintService 代理成功獲得下一個 MultiDoc 物件或說明沒有 MultiDoc 的指示之前,PrintService 代理將接著調用 getDoc()
一次或多次。介面 MultiDoc 的實作可以假定 PrintService 代理將使用此 interleaved 網要;對於任意其他網要的使用,未指定 MultiDoc 實作的行為。
next()
對於同時存取同一 multidoc 的客戶端執行緒的數目沒有限制。因此,必須將介面 MultiDoc 的所有實作設計為多執行緒安全的。實際上,在 PrintJob 執行緒從 doc 列表(概念上的列表)的開始獲取 doc 的同時,客戶端執行緒可以向該列表的末尾添加 doc;只要 multidoc 物件可正確地對這些執行緒實作同步,這兩個執行緒將互不干擾。
方法摘要 | |
---|---|
Doc |
getDoc()
獲取當前的 doc 物件。 |
MultiDoc |
next()
轉到包含 doc 物件序列中下一個 doc 物件的 multidoc 物件。 |
方法詳細資訊 |
---|
Doc getDoc() throws IOException
IOException
- 如果讀取文檔時出現錯誤。MultiDoc next() throws IOException
IOException
- 如果尋找下一個文檔時出現錯誤
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。