#68 Added class diagram and referenced it from the README.md

This commit is contained in:
Ilkka Seppala 2015-07-23 00:49:04 +03:00
parent a8b7dd5a53
commit 18618dfbec
3 changed files with 87 additions and 0 deletions

View File

@ -627,6 +627,8 @@ validation and for building to order
## <a name="async-method-invocation">Async Method Invocation</a> [&#8593;](#list-of-design-patterns) ## <a name="async-method-invocation">Async Method Invocation</a> [&#8593;](#list-of-design-patterns)
**Intent:** Asynchronous method invocation is pattern where the calling thread is not blocked while waiting results of tasks. The pattern provides parallel processing of multiple independent tasks and retrieving the results via callbacks or waiting until everything is done. **Intent:** Asynchronous method invocation is pattern where the calling thread is not blocked while waiting results of tasks. The pattern provides parallel processing of multiple independent tasks and retrieving the results via callbacks or waiting until everything is done.
![alt text](https://github.com/iluwatar/java-design-patterns/blob/master/async-method-invocation/etc/async-method-invocation.png "Async Method Invocation")
**Applicability:** Use async method invocation pattern when **Applicability:** Use async method invocation pattern when
* You have multiple independent tasks that can run in parallel * You have multiple independent tasks that can run in parallel
* You need to improve performance of running a group of sequential tasks * You need to improve performance of running a group of sequential tasks

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<class-diagram version="1.1.8" icons="true" automaticImage="PNG" always-add-relationships="false" generalizations="true"
realizations="true" associations="true" dependencies="false" nesting-relationships="true">
<interface id="1" language="java" name="com.iluwatar.async.method.invocation.AsyncExecutor"
project="async-method-invocation"
file="/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncExecutor.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="220" y="404"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<class id="2" language="java" name="com.iluwatar.async.method.invocation.ThreadAsyncExecutor.CompletableResult"
project="async-method-invocation"
file="/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutor.java"
binary="false" corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="980" y="173"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<interface id="3" language="java" name="com.iluwatar.async.method.invocation.AsyncResult"
project="async-method-invocation"
file="/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncResult.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="580" y="443"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<interface id="4" language="java" name="com.iluwatar.async.method.invocation.AsyncCallback"
project="async-method-invocation"
file="/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/AsyncCallback.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="156" y="173"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</interface>
<class id="5" language="java" name="com.iluwatar.async.method.invocation.ThreadAsyncExecutor"
project="async-method-invocation"
file="/async-method-invocation/src/main/java/com/iluwatar/async/method/invocation/ThreadAsyncExecutor.java"
binary="false" corner="BOTTOM_RIGHT">
<position height="-1" width="-1" x="580" y="173"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<dependency id="6">
<end type="SOURCE" refId="5"/>
<end type="TARGET" refId="4"/>
</dependency>
<dependency id="7">
<end type="SOURCE" refId="5"/>
<end type="TARGET" refId="3"/>
</dependency>
<nesting id="8">
<end type="SOURCE" refId="5"/>
<end type="TARGET" refId="2"/>
</nesting>
<realization id="9">
<end type="SOURCE" refId="5"/>
<end type="TARGET" refId="1"/>
</realization>
<realization id="10">
<end type="SOURCE" refId="2"/>
<end type="TARGET" refId="3"/>
</realization>
<classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</classifier-display>
<association-display labels="true" multiplicity="true"/>
</class-diagram>