2009-10-14 44 views
1

背景故事:

XML有這些Source和Result接口。 這些是Java中不同XML技術之間的適配器。 這些類的實例代表DOM,SAX,JAXB,XML流,XML事件 (甚至更多?)。Java:可能的泛化:流,讀者,字符緩衝區,stringbuilder,...?

問題:

那麼,對於普通的老字符串,有什麼可比的嗎?一些概括 之間?

  • [Input|Output]Stream
  • Reader|Writer
  • StringBuffer
  • StringBuilder
  • CharBuffer(從NIO)
  • File(或Path爲我們之間的JDK7球迷)
  • (最後)CharSequence

也許有一些通用的API(Apache commons東西...?)它提供了這樣的功能嗎?

澄清例如:

用法與經典的方法:

的接口需要能夠寫(讀)字符從(到)的所有可能的源(結果):

interface SomeInterface { 
    readFrom(CharacterSequence source); 
    readFrom(InputStream source); 
    readFrom(Reader source); 
    readFrom(File source); 
    // ... 
    writeTo(CharacterSequence result); 
    writeTo(OutputStream result); 
    writeTo(Writer result); 
    writeTo(File result); 
    // ... 
} 

用法與預期的方法:

隨着一些虛構的CharacterSourceCharacterResult接口,現在讀/寫possi每一個方法竹葉提取:

interface SomeInterface { 
    readFrom(CharacterSource source); 
    writeTo(CharacterResult result); 
} 

預期的方式實現,可能層次:

interface CharacterSource 
+ class CharBufferSource 
+ class InputStreamSource 
+ class ReaderSource 
+ class FileSource 
+ ... 

interface CharacterResult 
+ class CharBufferResult 
+ class OutputStreamResult 
+ class WriterResult 
+ class FileResult 
+ ... 

如果這些功能不存在,我應該寫一個自己的迷你API? (放大API,我目前參與的)

什麼是關於這個

+1

你能解釋一下這樣的界面是什麼樣子的,以及爲什麼要使用它? – 2009-10-14 17:42:41

+0

增加了澄清示例代碼 – 2009-10-14 18:14:42

回答

1

There's this(yep - Apache Commons)。

+0

嗯,實用程序類,看起來litte不方便。但是,無論如何感謝;) – 2009-10-14 18:24:45

0

您可以使用ReaderWriter來概括您的界面。如果您想讀取/寫入File,則可以使用FileReader/FileWriter。同樣,您可以使用其他Reader/Writer實現來讀取/寫入String(即CharSequence)或流。

0

是不是Google's common-ioInputSupplierOutputSupplier類似的事情對我提出的接口? (一種推廣所有可能的輸入輸出流的方法)

奇怪的是,谷歌接口的類型參數沒有任何約束(我想的是Closable什麼的)。