DDD&FP1 - Scala

  • Domain Object lifecycle
    • Factory (with effects)
    • Lenses
    • Reader Monad
  • aggregate root
  • prosta domena
    • stworzyć jakieś entity, kilka value object i services jako metody
    • algebra - trait bezstanowy
    • mixins

Przyklad algebry - kilka metod abstrakcyjnych i pewne generalne prawa

trait AccountService {
    def debit(a: Account, amount: Amount): Try[Account] = //..
    def credit(a: Account, amount: Amount): Try[Account] = //..
}
def transfer(from: Account, to: Account, amount: Amount) = for {
    d <- debit(from, amount)
    c <- credit(to, amount)
}
  • traity, moduły i typy abstrakcyjne

  • property based testing do testowania, ze agregat pozostaje spojny z zasadami.

results matching ""

    No results matching ""