From 3a19d67d9dbd174d78007402fae27b4cf6c89d1b Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Tue, 9 Sep 2014 14:02:02 +0800 Subject: [PATCH] add generic-io-api-in-java-and-api-design --- README.md | 1 + .../README.md | 208 ++++++++++++++++++ .../input-output.jpg | Bin 0 -> 58835 bytes 3 files changed, 209 insertions(+) create mode 100644 generic-io-api-in-java-and-api-design/README.md create mode 100644 generic-io-api-in-java-and-api-design/input-output.jpg diff --git a/README.md b/README.md index 4ac853c..dcbab50 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Chinese translations for good english resources. ------------------ - [Python Philosophy(Python哲学)翻译及简析](python-philosophy/) +- [Java的通用I/O API设计](generic-io-api-in-java-and-api-design/) - [GUI & CLI原则](gui-and-cli-principles/) 其它 diff --git a/generic-io-api-in-java-and-api-design/README.md b/generic-io-api-in-java-and-api-design/README.md new file mode 100644 index 0000000..89ded26 --- /dev/null +++ b/generic-io-api-in-java-and-api-design/README.md @@ -0,0 +1,208 @@ +原文链接:[A generic input/output API in Java](http://www.jroller.com/rickard/entry/a_generic_input_output_api) - [Rickard Öberg](http://www.jroller.com/rickard/) +译文发在:[【译】Java的通用I/O API](http://oldratlee.com/474/tech/java/generic-io-api-in-java-and-api-design.html),2012-05-11 + +### :apple: 译序 + +原文[A generic input/output API in Java](http://www.jroller.com/rickard/entry/a_generic_input_output_api)(by Rickard Öberg)中给出了一个通用`Java` `IO` `API`设计,并且有`API`的`Demo`代码。更重要的一点是,这篇文章给出实现这个`API`设计本身的步骤和过程,这让`API`设计实现过程有了条理。文中示范了从 普通简单实现 整理成 正确分解、可以复用、可扩展的`API`设计 的过程。这个很值得理解和学习! + +设计偏向是艺术,一个赏心悦目的设计,尤其是`API`设计,旁人看来多是妙手偶得的感觉,如果能有些章可循真是一件好事。给出 _**减少艺术的艺术工作量**_ 的方法的人是大师。 + +`Java`的通用`I/O` `API`设计 +========================= + +![](input-output.jpg) + +上周处理了很多数据搬移,有原始`byte`形式的,也有`String`形式的,还有`SPI`和领域级对象形式。这些活让我觉得,以可伸缩、高性能、正确处理错误的方式把数据从一处搬到另一处,是非常有难度。我要一遍又一遍做一些事,比如从文件中读出`String`。 + +这让我有了个想法:一定有个通用模式来处理这些事,可以抽取出来放到库中。“从文本文件中读出文本行”这样的事应该只做一遍,然后用在各个需要的场景中。让我们看一个读文件然后写入另一个文件的典型场景,看看能不能从中发现包含了哪几个部分。 + +```java +1: File source = new File( getClass().getResource( "/iotest.txt" ).getFile() ); +1: File destination = File.createTempFile( "test", ".txt" ); +1: destination.deleteOnExit(); +2: BufferedReader reader = new BufferedReader(new FileReader(source)); +3: long count = 0; +2: try +2: { +4: BufferedWriter writer = new BufferedWriter(new FileWriter(destination)); +4: try +4: { +2: String line = null; +2: while ((line = reader.readLine()) != null) +2: { +3: count++; +4: writer.append( line ).append( '\n' ); +2: } +4: writer.close(); +4: } catch (IOException e) +4: { +4: writer.close(); +4: destination.delete(); +4: } +2: } finally +2: { +2: reader.close(); +2: } +1: System.out.println(count) +``` + +行左边的数字是我标识的4个部分。 + +1. 客户代码,初始化了传输,要知道输入和输出的源。 +1. 从输入中读的代码。 +1. 辅助代码,用于跟踪整个过程。这些代码我希望能够重用,而不管是何种传输的类型。 +1. 最后这个部分是接收数据,写数据。这个代码,我要批量读写,可以在第2第4部分修改,改成一次处理多行。 + +API +--------------------------------------- + +一旦明确上面划分的内容,剩下就只是为每个部分整理成一个接口,并保证在各种场景能方便使用。结果如下。 首先要有输入,即`Input`接口: + +```java +public interface Input +{ + void transferTo( Output output ) + throws SenderThrowableType, ReceiverThrowableType; +} +``` + +`Input`,如`Iterables`,可以被多次使用,用于初始化一处到另一处的传输。因为我泛化传输的数据类型为`T`,所以可以是任何类型(`byte[]`、`String`、`EntityState`、`MyDomainObject`)。为了让发送者和接收者可以抛出各自的异常,接口上把各自己的异常声明成了类型参数。比如:在出错的时,`Input`抛的可以是`SQLException`,`Output`抛的是`IOException`。异常是强类型的,并且在出错时发送和接收双方都必须知道的,这使的双方做合适的恢复操作,关闭他们打开了的资源。 + +在接收端的是`Output`接口: + +```java +public interface Output +{ + void receiveFrom(Sender sender) + throws ReceiverThrowableType, SenderThrowableType; +} +``` + +当`receiveFrom`方法被`Input`调用时(通过调用`Input`的`transferTo`方法触发),`Output`应该打开好了它所需要的资源,然后期望数据从`Sender`发送过来。`Input`和`Output`必须要有类型`T`,两者对要发送的内容达到一致。后面我们可以看到如何处理不一致的情况。 + +接下来是`Sender`接口: + +```java +public interface Sender +{ + void sendTo(Receiver receiver) + throws ReceiverThrowableType, SenderThrowableType; +} +``` + +`Output`调用`sendTo`方法,传入一个`Receiver`,`Sender`使用这个`Receiver`来发送一个一个的数据。`Sender`在这个时候发起传输,把类型数据`T`传输到`Receiver`,一次一个。`Receiver`接口如下: + +```java +public interface Receiver +{ + void receive(T item) + throws ReceiverThrowableType; +} +``` + +当`Receiver`从`Sender`收到数据时,即可以马上写到底层资源中,也可以分批写入。`Receiver`知道传输什么时候结束(`sendTo`方法返回了),所以正确写入剩下的分批数据、关闭持有的资源。 + +这个简单的模式在发送方和接收方各有2个接口,并保持了以可伸缩、高性能和容错的方式传输数据的潜能。 + +标准化`I/O` +--------------------------------------- + +上文的`API`定义了数据发送和接收的契约,然后可以制定几个输入输出的标准。比如:从文本文件中读取文本行后再写成文本文件。这个操作可以静态方法中,方便的重用。最后,拷贝文本文件可以写成: + +```java +File source = ... +File destination = ... +Inputs.text( source ).transferTo( Outputs.text(destination) ); +``` + +一行代码处理了读文件、写文件、资源清理和其它零零碎碎的操作。真心的赞!`transferTo`方法会抛出`IOException`,要向用户显示`Error`可以`catch`这个异常。但实际处理这些`Error`往往是,关闭文件,把没有写成功的文件删除,而这些`Input`、`Output`已经处理好了。我们再也不需要关心文件读写的细节! + +拦截传输过程 +--------------------------------------- + +上面处理了基本的`I/O`传输,我们常常还要做些其它的事。可能要计数一下传输了多少个数据,过滤一下数据,或者是每1000条数据做一下日志,又或者要看一下正在进行什么操作。既然输入输出已经分离,这些事变成在输入输出的协调代码中简单地插入一些逻辑。大部分协调代码有类似的功能,可以放到标准的工具方法中,更方便使用。 + +第一个标准修饰器是一个过滤器。实现时我用到了`Specification`。 + +```java +public static +Output filter( final Specification specification, final Output output) +{ + ... create an Output that filters items based on the Specification ... +} +``` + +`Specification`如下: + +```java +interface Specification +{ + boolean test(T item); +} +``` + +有了这个简单部件,我可以在传输时轻松地过滤掉那些不要出现在接收者端的数据。下面的例子删除文件中的空行: + +```java +File source = ... +File destination = ... +Inputs.text( source ).transferTo( Transforms.filter(new Specification() +{ + public boolean test(String string) + { + return string.length() != 0; + } +}, Outputs.text(destination) ); +``` + +第二个常见的操作是把数据从一个类型映射到另一个类型。就是处理要`Input`和`Output`的数据类型不同,要有方法把输入数据类型映射成输出的数据类型。下面例子的把`String`映射成`JSONObject`,操作方法会是这个样子: + +```java +public static +Output map(final Function function, final Output output) +``` + +`Function`定义是: + +```java +interface Function +{ + To map(From from); +} +``` + +通过这些,可以把`String`的`Input`连接到`JSONObject`的`Output`: + +```java +Input input = ...; +Output output = ...; +input.transferTo(Transforms.map(new String2JSON(), output); +``` + +`String2JSON`类实现了`Function`接口,它的`map`方法把`String`转换成`JSONObject`。 + +到了现在,我们可以实现前面提到数据计数的例子,可以把计数实现成一个通用的映射,转换前后的类型不变,只是维护了一个计数,在每次调用`map`方法时更新计数。例子代码如下: + +```java +File source = ... +File destination = ... +Counter counter = new Counter(); +Inputs.text( source ).transferTo( Transforms.map(counter, Outputs.text(destination) )); +System.out.println("Nr of lines:"+counter.getCount()) +``` + +Usage in the `Qi4j` `SPI` +--------------------------------------- + +【译者注,这一节说具体库`Qi4j`,略过】 + +结论 +--------------------------------------- + +软件开发时,从一个输入到另一个输出的数据和对象的搬移很常见,可能在中间还要做些转换。通常都是用一些零散代码(`scratch`)来完成这些事,结果是代码错误和使用不当的模式。通过引入通用`I/O` `API`,恰当封闭和隔离,这个任务可以可以更轻松地以伸缩、高性能、无错误的方式完成,并且还可以在在需要额外功能时修饰实现。 + +这遍文章仅仅勾勒了这种使用方式,`API`和辅助类可以在`Qi4j Core 1.3-SNAPSHOT`中有(详见`Qi4j`的[主页](http://www.qi4j.org/))。理想状态是,在整个`Qi4j`使用中任何使用`I/O`的地方一开始按这种方式来。 + +多谢你的阅读,希望你能有所收获 :-) + + diff --git a/generic-io-api-in-java-and-api-design/input-output.jpg b/generic-io-api-in-java-and-api-design/input-output.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa3eeb463025f2ca4ce0498a5860dc3eb76fc07f GIT binary patch literal 58835 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 literal 0 HcmV?d00001