Domain driven design com functional programing(f#)

Post on 07-Jan-2017

184 views 0 download

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