Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit89e7f51

Browse files
authored
Merge pull requestiluwatar#519 from iluwatar/presentation
Add hexagonal architecture presentation
2 parentscc02ff4 +1abf5b1 commit89e7f51

File tree

5 files changed

+110
-3
lines changed

5 files changed

+110
-3
lines changed

‎hexagonal/README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,18 @@ Allow an application to equally be driven by users, programs, automated test or
2323
##Applicability
2424
Use Hexagonal Architecture pattern when
2525

26-
*it is important that the application is fully testable
27-
*you use Domain Driven Design methodology and/or Microservices architectural style
26+
*When the application needs to be independent of any frameworks
27+
*When it is important that the application highly maintainable and fully testable
2828

2929
##Tutorials
3030
*[Build Maintainable Systems With Hexagonal Architecture](http://java-design-patterns.com/blog/build-maintainable-systems-with-hexagonal-architecture/)
3131

32+
##Presentations
33+
*[Hexagonal Architecture](https://github.com/iluwatar/java-design-patterns/tree/master/hexagonal/etc/presentation.html)
34+
3235
##Real world examples
3336

34-
*[Apache Isis](https://isis.apache.org/)
37+
*[Apache Isis](https://isis.apache.org/) builds generic UI and REST API directly from the underlying domain objects
3538

3639
##Credits
3740

‎hexagonal/etc/layers.png

15.5 KB
Loading

‎hexagonal/etc/ports_and_adapters.png

34 KB
Loading

‎hexagonal/etc/ports_and_adapters.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile userAgent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.90 Safari/537.36" version="6.0.1.3" editor="www.draw.io" type="device"><diagram name="Page-1">7Zpdk6I4FIZ/jbdbJAHEyx7nY/diqrqqd2tnLiOJSDUSK6ZHe3/9BkmUfFiDDqBM2TcNBwLxOe85nBOYoPl6/4XjzeorI7SYwIDsJ+jjBEKA4kj+qyzvtWUag9qQ8Zyok06Gl/w/qoyBsr7lhG6NEwVjhcg3pjFlZUlTYdgw52xnnrZkhXnXDc6oY3hJceFa/82JWNXWJApO9j9pnq30nUGgjixw+ppx9laq+00gWh7+6sNrrK+lzt+uMGG7hgl9mqA5Z0zUW+v9nBYVW42tHvf5zNHjvDktRZsBqB7wAxdvVM/4MC/xrlnIKW6qzRXd44yVE/RhQ3m+poLyk/X5ZPqwW+WCvmxwWo3aSYFI20qsC7kH5Ka6I+WC7s/OGhxZSI1RJi/N3+UpagBMFD4lL6D3dydnIa2lVcNRMFZGrASSHa99giQ3FCc/MzhKZmgaGcyOKBrMAPQwO2r7V5iFDrM549ThJgfJEKc/B7LMi2LOCsYP46oYg2kq7VvB2SttHCHxIo7ibhCGATARJshBqDNfk2AXoot+Lrpr4RFMk6UXXpwmdLHsCF5s6W/qwkMe+aEO4MW/GzwEPQmvJ3jT0cMDMxNeGA0GLxk7PDQ1H7VDKm82fnh2zoODwdPlz3jphdCUHoyGkx5oUeRdTS+iCQl99BK4QHFHxUoUWfQ89V5v9Fq0FXdOz9ZeMCC9Nk/ckjxVfa7cK1lJTWJ0n4tvje3vcjuotks5k2/Nne/6rJJ8zqsJHQ7Vd6PE6ZEtenJG7I2n1KhQBeYZFU0duJAbECMPRG3jtMAi/2HOwkdW3eGZ5XJ+Z7vECFjOqWevRjWbZOtCCJkXCu2Cvv7NzoUOjj7+7Ha+b1MwXOz7P6IefQwfPr7Qx33WNYNkR5s60nXuANkR9lnXDEIPWc8WNBvu2aJn+8v5JfDkF/V0Ac2nS3e5J/Hkntkj91yWe7S7O/U/OO/9/nzfWC5/+L6d70dfldsrOSEcbiXHs4R9ZeTUGdEXO41E2mX0TD3Rc1+Vue2gq6Mn6S963BX4Z8bF1hGBlLcwPW/GhFJGM4CUCRd5VsrdVDrz8FaoCpY8xcWTOrDOCSnOBWcH8YVmoYHzGDgNWYS+12pdxJe7SP/PVlKQZ1Q0ltVvtVEfXrRSojD3/w4NALvudd9hAN97x7ALQO6ywN90WwUDzqiS903h2CvFiZucZ32xcdvmv6RqMi6zFCtvjuZY4et851lN6g2N221+xAIv8Pb28RQHJhcwG04yOrU1uHxl6au0kLvBYz3dYOTi6S3doPF2irpKNAqe2I96mIIHWJ6Mr20XgF059dcuoD5axWEEoOsRQwDThwAuFECbfvE+Ox5dlxkCSB4CuFAAXbW8vpcRvldRHT4CfAK46WrhKAXQ5quzOxUAdAWAbrpkOEoBuE35E8Eb2Y//XuseVh+CPP1ZR+secvf0dXftkdMn9OjT/w==</diagram></mxfile>

‎hexagonal/etc/presentation.html

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>Title</title>
5+
<metacharset="utf-8">
6+
<style>
7+
@importurl(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
8+
@importurl(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
9+
@importurl(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);
10+
11+
body {font-family:'Droid Serif'; }
12+
h1,h2,h3 {
13+
font-family:'Yanone Kaffeesatz';
14+
font-weight: normal;
15+
}
16+
.remark-code, .remark-inline-code {font-family:'Ubuntu Mono'; }
17+
</style>
18+
</head>
19+
<body>
20+
<textareaid="source">
21+
22+
class: center, middle
23+
24+
# Hexagonal Architecture
25+
26+
---
27+
28+
# Also known as
29+
30+
* Ports and Adapters
31+
* Clean Architecture
32+
* Onion Architecture
33+
34+
---
35+
36+
# Layered architecture problems
37+
38+
* No clear application core
39+
* Business logic leaks to the presentation layer
40+
<br/>
41+
<br/>
42+
43+
.center[![Alt text](layers.png)]
44+
45+
---
46+
47+
# Intent
48+
49+
* Application can be driven by users, programs, automated test or batch scripts
50+
* Application can be developed and tested in isolation from its eventual run-time devices and databases
51+
52+
---
53+
54+
# Applicability
55+
56+
Use Hexagonal Architecture pattern
57+
58+
* When the application needs to be independent of any frameworks
59+
* When it is important that the application highly maintainable and fully testable
60+
61+
---
62+
63+
# Concepts
64+
65+
* Ports are interfaces
66+
* The ports that drive the application are called primary ports
67+
* The ports that are driven by the application are called secondary ports
68+
69+
---
70+
71+
# Concepts
72+
73+
* Adapters are interface implementations
74+
* Typically different adapters for testing and production are provided
75+
76+
---
77+
78+
# Diagram
79+
80+
.center[![Alt text](ports_and_adapters.png)]
81+
82+
---
83+
84+
# Real world examples
85+
86+
* [Apache Isis](https://isis.apache.org/) builds generic UI and REST API directly from the underlying domain objects
87+
88+
---
89+
90+
# Tutorials
91+
92+
* Blog http://java-design-patterns.com/blog/build-maintainable-systems-with-hexagonal-architecture/
93+
* Source code http://java-design-patterns.com/patterns/hexagonal/
94+
95+
</textarea>
96+
<scriptsrc="https://gnab.github.io/remark/downloads/remark-latest.min.js">
97+
</script>
98+
<script>
99+
varslideshow=remark.create();
100+
</script>
101+
</body>
102+
</html>
103+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp