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

96 lines
1.8 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
---
# Diagram
.center[![Alt text](hexagon.png)]
---
# Concepts
* Ports are interfaces
* Adapters are implementations
* Driver ports vs driven ports
---
# Real world examples
* [Apache Isis](https://isis.apache.org/)
---
# Implementation example
* 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>