Slide 1

Slide 1 text

ConFoo Bradley Holt, Developer Advocate Friday, February 26, 2016 An Introduction to Domain-Driven Design @BradleyHolt

Slide 2

Slide 2 text

@BradleyHolt

Slide 3

Slide 3 text

Domain-Driven Design A collaboration between domain experts and software practitioners

Slide 4

Slide 4 text

Complexity is in the Domain Complexity is in the domain, not in the technology

Slide 5

Slide 5 text

Models as Tools Models are tools used to solve problems within the domain

Slide 6

Slide 6 text

The Map is not the Territory Don't confuse models with reality itself

Slide 7

Slide 7 text

Building Blocks of DDD and the Life Cycle of a Domain Object

Slide 8

Slide 8 text

Entities Entities are defined by their identity

Slide 9

Slide 9 text

Value Objects Value objects encode attributes that describe things

Slide 10

Slide 10 text

Aggregates Aggregates group related entities to minimize complexity

Slide 11

Slide 11 text

Repositories A repository provides the illusion of an in-memory data store

Slide 12

Slide 12 text

Domain Layer Order Aggregate @BradleyHolt Order - id : int - customer : Customer - date : Date - lineItems : LineItem[1..*] + total() : Money «interface» OrderRepository + insertOrder(order:Order) + updateOrder(order:Order) + findOrderById(id:int) : Order + recentOrders([limit:int]) : Order[0..*] Customer LineItem … Infrastructure Layer … InMemoryOrderRepository + insertOrder(order:Order) + updateOrder(order:Order) + findOrderById(id:int) : Order + recentOrders(limit:int) : Order[0..*] RelationalMapperOrderRepository + insertOrder(order:Order) + updateOrder(order:Order) + findOrderById(id:int) : Order + recentOrders(limit:int) : Order[0..*]

Slide 13

Slide 13 text

Image Credits §  IMG_2619 by Jason Pelletier, on Flickr §  Sounds_of_Complexity11.jpg by Enzo Varriale, on Flickr §  model by MaZzuk, on Flickr §  taking the subway to find the rents by Eli Duke, on Flickr §  DSC_3407 by Mad House Photography, on Flickr §  red numbers by DaveBleasdale, on Flickr §  Social graph by Dmitry Grigoriev, on Flickr §  Catalog. by Adam Mayer, on Flickr @BradleyHolt

Slide 14

Slide 14 text

Thank You @BradleyHolt