java-design-patterns/hexagonal/etc/presentation.html

104 lines
2.2 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<meta charset="utf-8">
<style>
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);
body { font-family: 'Droid Serif'; }
h1, h2, h3 {
font-family: 'Yanone Kaffeesatz';
font-weight: normal;
}
.remark-code, .remark-inline-code { font-family: 'Ubuntu Mono'; }
</style>
</head>
<body>
<textarea id="source">
class: center, middle
# Hexagonal Architecture
---
# Also known as
* Ports and Adapters
* Clean Architecture
* Onion Architecture
---
# Layered architecture problems
* No clear application core
* Business logic leaks to the presentation layer
<br />
<br />
.center[![Alt text](layers.png)]
---
# Intent
* Application can be driven by users, programs, automated test or batch scripts
* Application can be developed and tested in isolation from its eventual run-time devices and databases
---
# Applicability
Use Hexagonal Architecture pattern
* When the application needs to be independent of any frameworks
* When it is important that the application highly maintainable and fully testable
---
2016-11-13 11:23:22 +02:00
# Concepts
2016-11-13 11:23:22 +02:00
* Ports are interfaces
* The ports that drive the application are called primary ports
* The ports that are driven by the application are called secondary ports
---
# Concepts
2016-11-13 11:23:22 +02:00
* Adapters are interface implementations
* Typically different adapters for testing and production are provided
---
# Diagram
.center[![Alt text](ports_and_adapters.png)]
---
# Real world examples
2016-11-13 11:23:22 +02:00
* [Apache Isis](https://isis.apache.org/) builds generic UI and REST API directly from the underlying domain objects
---
2016-11-13 11:23:22 +02:00
# Tutorials
2016-11-13 11:23:22 +02:00
* Blog http://java-design-patterns.com/blog/build-maintainable-systems-with-hexagonal-architecture/
* Source code http://java-design-patterns.com/patterns/hexagonal/
</textarea>
<script src="https://gnab.github.io/remark/downloads/remark-latest.min.js">
</script>
<script>
var slideshow = remark.create();
</script>
</body>
</html>