Skip to content

Commit

Permalink
docs: Translation for zh (#1805)
Browse files Browse the repository at this point in the history
* add state and callback pattern

* add command and template-method pattern

* add iterator pattern

* add bridege and DI pattern

* fix issue #1600

* add converter,proxy,visitor pattern

* add caching,composite,delegation,dirty-flag,interpreter patterns

* add dao and producer-consumer

* add dto and provate class data pattern

* fix #1646 png path problems

* fix #1646 composite png path case problem

* add abstract document pattern and version-number pattern

* add ambassador pattern

* add acyclic-visitor and api-gateway pattern

* add abstract-factory pattern

* add active-object pattern

* add aggregator-microservices and arrange-act-assert pattern

* update async-method-invocation pattern

* add balking and business-delegate pattern

* add bytecode and circuit-break pattern

* update arrange/act/assert pattern problems

* add csch pattern

* add language code, correct pic path

* #1805 update permalink

Co-authored-by: Subhrodip Mohanta <subhrodipmohanta@gmail.com>
Co-authored-by: Mike <admin@xiaod.info>
Co-authored-by: Ilkka Seppälä <iluwatar@users.noreply.github.com>
  • Loading branch information
4 people committed Aug 1, 2021
1 parent d36efdb commit c5a4068
Show file tree
Hide file tree
Showing 50 changed files with 595 additions and 221 deletions.
4 changes: 2 additions & 2 deletions localization/zh/abstract-document/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Abstract Document
folder: abstract-document
permalink: /patterns/abstract-document/zh
permalink: /patterns/abstract-document/
categories: Structural
language: zh
tags:
Expand Down Expand Up @@ -166,7 +166,7 @@ public class Car extends AbstractDocument implements HasModel, HasPrice, HasPart

## 类图

![alt text](../../abstract-document/etc/abstract-document.png "Abstract Document Traits and Domain")
![alt text](../../../abstract-document/etc/abstract-document.png "Abstract Document Traits and Domain")

## 适用性

Expand Down
4 changes: 2 additions & 2 deletions localization/zh/abstract-factory/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Abstract Factory
folder: abstract-factory
permalink: /patterns/abstract-factory/zh
permalink: /patterns/abstract-factory/
categories: Creational
language: zh
tags:
Expand Down Expand Up @@ -168,7 +168,7 @@ public static void main(String[] args) {

## 类图

![alt text](../../abstract-factory/etc/abstract-factory.urm.png "Abstract Factory class diagram")
![alt text](../../../abstract-factory/etc/abstract-factory.urm.png "Abstract Factory class diagram")


## 适用性
Expand Down
4 changes: 2 additions & 2 deletions localization/zh/active-object/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Active Object
folder: active-object
permalink: /patterns/active-object/zh
permalink: /patterns/active-object/
categories: Concurrency
language: zh
tags:
Expand Down Expand Up @@ -122,4 +122,4 @@ public class Orc extends ActiveCreature {

## 类图

![alt text](../../active-object/etc/active-object.urm.PNG "Active Object class diagram")
![alt text](../../../active-object/etc/active-object.urm.PNG "Active Object class diagram")
4 changes: 2 additions & 2 deletions localization/zh/acyclic-visitor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Acyclic Visitor
folder: acyclic-visitor
permalink: /patterns/acyclic-visitor/zh
permalink: /patterns/acyclic-visitor/
categories: Behavioral
language: zh
tags:
Expand Down Expand Up @@ -123,7 +123,7 @@ public class ConfigureForUnixVisitor implements ZoomVisitor {

## 类图

![alt text](../../acyclic-visitor/etc/acyclic-visitor.png "Acyclic Visitor")
![alt text](../../../acyclic-visitor/etc/acyclic-visitor.png "Acyclic Visitor")

## 适用性

Expand Down
4 changes: 2 additions & 2 deletions localization/zh/adapter/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Adapter
folder: adapter
permalink: /patterns/adapter/zh
permalink: /patterns/adapter/
categories: Structural
language: zh
tags:
Expand Down Expand Up @@ -94,7 +94,7 @@ captain.row();
```

## 类图
![alt text](../../adapter/etc/adapter.urm.png "Adapter class diagram")
![alt text](../../../adapter/etc/adapter.urm.png "Adapter class diagram")


## 应用
Expand Down
4 changes: 2 additions & 2 deletions localization/zh/aggregator-microservices/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Aggregator Microservices
folder: aggregator-microservices
permalink: /patterns/aggregator-microservices/zh
permalink: /patterns/aggregator-microservices/
categories: Architectural
language: zh
tags:
Expand Down Expand Up @@ -95,7 +95,7 @@ curl http://localhost:50004/product

## 类图

![alt text](../../aggregator-microservices/aggregator-service/etc/aggregator-service.png "Aggregator Microservice")
![alt text](../../../aggregator-microservices/aggregator-service/etc/aggregator-service.png "Aggregator Microservice")

## 适用性

Expand Down
4 changes: 2 additions & 2 deletions localization/zh/ambassador/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Ambassador
folder: ambassador
permalink: /patterns/ambassador/zh
permalink: /patterns/ambassador/
categories: Structural
language: zh
tags:
Expand Down Expand Up @@ -167,7 +167,7 @@ Service result: -1

## 类图

![alt text](../../ambassador/etc/ambassador.urm.png "Ambassador class diagram")
![alt text](../../../ambassador/etc/ambassador.urm.png "Ambassador class diagram")

## 适用性

Expand Down
4 changes: 2 additions & 2 deletions localization/zh/api-gateway/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: API Gateway
folder: api-gateway
permalink: /patterns/api-gateway/zh
permalink: /patterns/api-gateway/
categories: Architectural
language: zh
tags:
Expand Down Expand Up @@ -123,7 +123,7 @@ public class ApiGateway {
```

## 类图
![alt text](../../api-gateway/etc/api-gateway.png "API Gateway")
![alt text](../../../api-gateway/etc/api-gateway.png "API Gateway")

## 适用性

Expand Down
10 changes: 3 additions & 7 deletions localization/zh/arrange-act-assert/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: pattern
title: Arrange/Act/Assert
folder: arrange-act-assert
permalink: /patterns/arrange-act-assert/zh
permalink: /patterns/arrange-act-assert/
categories: Idiom
language: zh
tags:
Expand Down Expand Up @@ -73,10 +73,7 @@ public class Cash {
}
```

Then we write our unit tests according to Arrange/Act/Assert pattern. Notice the clearly
separated steps for each unit test.

然后我们根据Arrange / Act / Assert模式编写单元测试。 注意每个单元测试的步骤是分开的清晰的。
然后我们根据安排/ 执行 / 断言模式编写单元测试。 注意每个单元测试的步骤是分开的清晰的。

```java
class CashAAATest {
Expand Down Expand Up @@ -129,9 +126,8 @@ class CashAAATest {

## 适用性

使用 Arrange/Act/Assert 模式当
使用 安排/执行/断言 模式当

* You need to structure your unit tests so that they're easier to read, maintain, and enhance.
* 你需要结构化你的单元测试代码这样它们可以更好的阅读,维护和增强。

## 鸣谢
Expand Down
57 changes: 28 additions & 29 deletions localization/zh/async-method-invocation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,32 @@ title: Async Method Invocation
folder: async-method-invocation
permalink: /patterns/async-method-invocation/
categories: Concurrency
language: zh
tags:
- Reactive
---

## 含义
## 意图

异步方法是一种调用线程在等待任务结果时候不会被阻塞的模式。该模式提供了对多个任务的并行处理,并通过回调或等待,在所有任务完成后在提供结果读取
异步方法调用是一个调用线程在等待任务结果时不会阻塞的模式。模式为多个独立的任务提供并行的处理方式并且通过回调或等到它们全部完成来接收任务结果

## 解释

真实世界案例
真实世界例子

> 发射太空火箭是一项令人兴奋的事业。在任务指挥部下达发射命令后, 经过一些未确定的时间,火箭要么成功发射,要么重演挑战者悲剧
> 发射火箭是一项令人激动的事务。任务指挥官发出了发射命令,经过一段不确定的时间后,火箭要么成功发射,要么惨遭失败
简而言之
通俗地说

> 异步方法调用开始任务处理并,在任务结果准备好之前立即返回。任务处理的结果会在稍后再返回给调用者
> 异步方法调用开始任务处理,并在任务完成之前立即返回。 任务处理的结果稍后返回给调用方
维基百科的解释
维基百科说

> 在多线程计算机编程中,异步方法调用(AMI),也被称为异步方法调用或异步模式。这是一种设计模式,在这种模式下,调用点在等待被调用代码完成时不会被阻塞。相反,当返回点到达时,调用线程会得到通知。轮询结果是一种不受欢迎的选择
> 在多线程计算机编程中,异步方法调用(AMI),也称为异步方法调用或异步模式,是一种设计模式,其中在等待被调用的代码完成时不会阻塞调用站点。 而是在执行结果到达时通知调用线程。轮询调用结果是不希望的选项
**编程示例**
**程序示例**

在这个例子中,我们正在发射太空火箭和部署月球车。

该应用演示了异步方法调用模式。该模式的关键部分是 `AsyncResult`,它是一个异步计算值的中间容器,`AsyncCallback` 可以在任务完成时提供执行行动作,`AsyncExecutor` 负责管理异步任务的执行。
在此示例中,我们正在发射太空火箭并部署月球漫游车。该应用演示了异步方法调用模式。 模式的关键部分是`AsyncResult`(用于异步评估值的中间容器),`AsyncCallback`(可以在任务完成时被执行)和`AsyncExecutor`(用于管理异步任务的执行)。

```java
public interface AsyncResult<T> {
Expand All @@ -54,7 +53,7 @@ public interface AsyncExecutor {
}
```

`ThreadAsyncExecutor``AsyncExecutor` 的一个实现。接下来将着重说明它的一些关键部分
`ThreadAsyncExecutor``AsyncExecutor`的实现。 接下来将突出显示其一些关键部分

```java
public class ThreadAsyncExecutor implements AsyncExecutor {
Expand Down Expand Up @@ -91,40 +90,41 @@ public class ThreadAsyncExecutor implements AsyncExecutor {
}
```

然后我们准备发射一些火箭,看看所有东西是如何一起运作的
然后,我们准备发射一些火箭,看看一切是如何协同工作的

```java
public static void main(String[] args) throws Exception {
// construct a new executor that will run async tasks
// 构造一个将执行异步任务的新执行程序
var executor = new ThreadAsyncExecutor();

// start few async tasks with varying processing times, two last with callback handlers
// 以不同的处理时间开始一些异步任务,最后两个使用回调处理程序
final var asyncResult1 = executor.startProcess(lazyval(10, 500));
final var asyncResult2 = executor.startProcess(lazyval("test", 300));
final var asyncResult3 = executor.startProcess(lazyval(50L, 700));
final var asyncResult4 = executor.startProcess(lazyval(20, 400), callback("Deploying lunar rover"));
final var asyncResult5 =
executor.startProcess(lazyval("callback", 600), callback("Deploying lunar rover"));

// emulate processing in the current thread while async tasks are running in their own threads
Thread.sleep(350); // Oh boy, we are working hard here
// 在当前线程中模拟异步任务正在它们自己的线程中执行
Thread.sleep(350); // 哦,兄弟,我们在这很辛苦
log("Mission command is sipping coffee");

// wait for completion of the tasks
// 等待任务完成
final var result1 = executor.endProcess(asyncResult1);
final var result2 = executor.endProcess(asyncResult2);
final var result3 = executor.endProcess(asyncResult3);
asyncResult4.await();
asyncResult5.await();

// log the results of the tasks, callbacks log immediately when complete
// 记录任务结果的日志, 回调的日志会在回调完成时立刻记录
log("Space rocket <" + result1 + "> launch complete");
log("Space rocket <" + result2 + "> launch complete");
log("Space rocket <" + result3 + "> launch complete");
}
```

以下是控制台输出
这是程序控制台的输出

```java
21:47:08.227 [executor-2] INFO com.iluwatar.async.method.invocation.App - Space rocket <test> launched successfully
Expand All @@ -140,22 +140,21 @@ public static void main(String[] args) throws Exception {
21:47:08.618 [main] INFO com.iluwatar.async.method.invocation.App - Space rocket <50> launch complete
```

## 类图
# 类图

![alt text](../../async-method-invocation/etc/async-method-invocation.png "Async Method Invocation")
![alt text](../../../async-method-invocation/etc/async-method-invocation.png "Async Method Invocation")

## 适用场景
## 适用性

在以下场景可以使用异步调用模式
在以下情况下使用异步方法调用模式

* 你有多有可以并行执行的独立任务
* 你需要提高一组串行任务的性能
* 你的处理能力有限、或者有长期运行的任务,调用者不应该等待任务所有任务运行结束
* 您有多个可以并行运行的独立任务
* 您需要提高一组顺序任务的性能
* 您的处理能力或长时间运行的任务数量有限,并且调用方不应等待任务执行完毕

## 现实示例
## 真实世界例子

* [FutureTask](http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/FutureTask.html)
* [CompletableFuture](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html)
* [ExecutorService](http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html)
* [Task-based Asynchronous Pattern](https://msdn.microsoft.com/en-us/library/hh873175.aspx)

0 comments on commit c5a4068

Please sign in to comment.