domain driven design com functional programing(f#)
TRANSCRIPT
De onde veio e porque voltou?
Menos código
Higher order function
Pure function
Currying
Recursion
Map
List comprehension or for comprehension
Filter
Pattern Matching
Fold
Herança/Polimorfismo
Herança
Polimosfismo
Principais pontos do DDD
Alinhamento de código com Negócio
Favorece a reutilização
Diminui o Acoplamento
Independência de Tecnologia
In DDD, we don’t consider any databases.
DDD is all about the domain , not about the database, and Persistence
The domain layer is the heart of the software and this is where the interesting stuff happens
DDD não é uma bala de prata para todo o desenvolvimento do aplicativo, ele apenas ajuda a gerenciar a complexidade, quando a complexidade vem do domínio.
Eric Evans
Tudo se resume à complexidade do comportamento em seu sistema. Se você complicada e a cada mudança de regras de negócios que envolvem a validação, cálculos, e derivações ... você vai querer um modelo de objeto.
Martin Fowler
Layers
User interface
Responsável por apresentar informações ao usuário e interpretar os comandos do usuário.
Coordena a atividade de aplicativos.
Aplication layer
Domain layer
Contém informações sobre o domínio do negócio.
Infrastructure layer
Esta camada atua como uma biblioteca de suporte para todas as outras camadas. Ele fornece comunicação entre as camadas, implementa persistência para objetos de negócios
Value Object != EntityVocê compra um livro para formar a biblioteca. Se você perder esse livro e comprar outro e você não se importa qual é qual, em seguida, o livro é um Value Object.
Mas se o livro que você compra é assinada pelo autor, e é muito difícil substituí-lo. Você se preocupa com esse livro específico, outra cópia simples não irá substituí-lo. Esse livro é uma Entity.
F# / DDD
http://www.tryfsharp.orghttp://fsharpforfunandprofit.com