Skip to content

A collection of interfaces and abstract classes to express domain-driven design concepts in Java code used for teaching.

License

Notifications You must be signed in to change notification settings

Microservice-API-Patterns/DDD-Library

Repository files navigation

Domain-Driven Design Library

This library is a collection of interfaces and abstract classes to express domain-driven design concepts in Java code. Most types in this library are pure marker interfaces and only for documentation purposes. An added benefit is that IDEs can show all implementations of an interface, thus making it easy to discover all implementations of for example Value Objects or Entities.

Pattern representations

Pattern (or Variant) Implementation in this library Example in Lakeside Mutual
Layered Architecture n/a Top-level packages in Lakeside Mutual backend represents the layers suggested by E. Evans in the "light blue" book
Module n/a Java sub-packages in Domain Layer of Lakeside Mutual backends
Entity Entity CustomerProfileEntity
Value Object ValueObject PolicyPeriod
Service Service See layer-specific variants below:
Application Service ApplicationService CustomerService
Domain Service DomainService InteractionLogService
Infrastructure Service InfrastructureService CustomerCoreService
Repository Repository CustomerRepository
Factory Factory CustomerFactory
Aggregate Aggregate CustomerAggregateRoot
Bounded Context BoundedContext CustomerCoreApplication
Context Map n/a n/a
Subdomain patterns n/a n/a

More Information

This website collects pointers to DDD resources, for instance:

DDD Example(s)

This DDD library was developed for the Lakeside Mutual sample application.

The DDD Sample Application that implements the running example in Eric Evans' Domain-Driven Design is also available on GitHub. It deals with cargo booking, routing and tracking.

The agile project management sample accompanying Implementing Domain-Driven Design by Vaughn Vernon can be found on GitHub as well.

About

A collection of interfaces and abstract classes to express domain-driven design concepts in Java code used for teaching.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages