NooBxGockeL c2a7b902a9 Work on #190: urm/puml updates
* added pumlid where it was missing and possible
* removed pumlid where it generated a bad image
* regenerated some incorrect puml's
* added 'left to right direction' puml prefix to some diagrams to improve the automatic layouting
2017-03-25 22:07:10 +01:00

43 lines
1.4 KiB
Markdown

---
layout: pattern
title: Hexagonal Architecture
folder: hexagonal
permalink: /patterns/hexagonal/
pumlid: HSTB4W8X30N0g-W1XkozpPD90LO8L3wEnzUTk-xxq2fvSfhSUiJs1v7XAcr4psSwMrqQh57gcZGaBmICNdZZEDb7qsCZWasT9lm7wln1MmeXZlfVIPjbvvGl
pumlformat: svg
categories: Architectural
tags:
- Java
- Difficulty-Expert
---
## Also known as
* Ports and Adapters
* Clean Architecture
* Onion Architecture
## Intent
Allow an application to equally be driven by users, programs, automated test or batch scripts, and to be developed and tested in isolation from its eventual run-time devices and databases.
![Hexagonal Architecture class diagram](./etc/hexagonal.png)
## Applicability
Use Hexagonal Architecture pattern when
* When the application needs to be independent of any frameworks
* When it is important that the application highly maintainable and fully testable
## Tutorials
* [Build Maintainable Systems With Hexagonal Architecture](http://java-design-patterns.com/blog/build-maintainable-systems-with-hexagonal-architecture/)
## Presentations
* [Hexagonal Architecture](https://github.com/iluwatar/java-design-patterns/tree/master/hexagonal/etc/presentation.html)
## Real world examples
* [Apache Isis](https://isis.apache.org/) builds generic UI and REST API directly from the underlying domain objects
## Credits
* [Alistair Cockburn - Hexagonal Architecture](http://alistair.cockburn.us/Hexagonal+architecture)