Hexagonal Architecture Marcus Biel Software Craftsman .
-
Upload
brendan-stevenson -
Category
Documents
-
view
229 -
download
2
Transcript of Hexagonal Architecture Marcus Biel Software Craftsman .
![Page 1: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/1.jpg)
Hexagonal Architecture
Marcus BielSoftware Craftsman
www.marcus-biel.com
![Page 2: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/2.jpg)
Maintainability
![Page 3: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/3.jpg)
The Hexagon
![Page 4: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/4.jpg)
The Outside
![Page 5: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/5.jpg)
![Page 6: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/6.jpg)
Framework
public class HttpController extends BaseController {[...]
public void process(Request req, Response resp) {[...]
comandBus.execute(new Command(param1…));}
[...]}
![Page 7: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/7.jpg)
![Page 8: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/8.jpg)
Application
public class CB implements CommandBus {[…]
public void execute(Command command) { registry.getHandler(command).execute();}
[…]}
![Page 9: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/9.jpg)
![Page 10: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/10.jpg)
Domain
public class Car implements Domain {
public void drive(Gear gear) {if(isNotAllAllowed(gear){
throw new InvalidGearException();}
}}
![Page 11: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/11.jpg)
Ports
![Page 12: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/12.jpg)
Ports & Adapters
![Page 13: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/13.jpg)
Use Case
![Page 14: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/14.jpg)
The Hexagon
![Page 15: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/15.jpg)
![Page 16: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/16.jpg)
public interface CommandBus {
void execute(Command command);
}
![Page 17: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/17.jpg)
public interface CommandHandler {
public void handle(Command command);
}
![Page 18: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/18.jpg)
A good architecture maximizes the
number of decisions NOT madeRobert C. Martin
![Page 19: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/19.jpg)
A good architecture allows major decisions
to be deferredRobert C. Martin
![Page 20: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/20.jpg)
Questions?
@MarcusBielwww.marcus-biel.com
![Page 21: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/21.jpg)
Birthday-Greeting-Kata
![Page 22: Hexagonal Architecture Marcus Biel Software Craftsman .](https://reader035.fdocuments.in/reader035/viewer/2022062217/56649ef35503460f94c05f83/html5/thumbnails/22.jpg)
References
Chris Fidao, Hexagonal Architecturehttp://fideloper.com/hexagonal-architecture
Robert C Martin - Clean Architecture and Design https://www.youtube.com/watch?v=Nsjsiz2A9mg
Birthday-Greeting-Kata:http://matteo.vaccari.name/blog/archives/154