Serwisy

Serwis domenowy

  • Należy do warstwy domenowej

  • Testowalny w izolacji i jednostkowo

  • Bezstanowy

class PauseSubscriptionDomainService {
 Result pause(Subscriber subscriber, IndividualSubsription subscription) {
 LoyalityPoints points = subscriber.currentPoints();
 if (points.qualifyToPremium()) {
 return subscription.pause(new CanAlwaysPausePolicy());
 }
 return subscription.pause(new StandardPausingPolicy());
 }
}

class PauseSubscriptionDomainServiceSpec extends Specification {
 PauseSubscriptionDomainService service = new PauseSubscriptionService()
 def 'premium subscriber can always pause subscription'() {
 given:
 IndividualSubscription sub = anIndividualSubscription(with10Pauses())
 and:
 Subscriber subscriber = withLoyalityPoints(enoughToBePremium())
 when:
 Result result = pauseSubscriptionService.pause(subscriber, sub)
 then:
 result.isSuccessful()
 }
}

Serwis dostaje obiekty domenowe i wykonuje część potrzebnej logiki.

W naszym przypadku sprawdzamy czy subskrubent ma odpowiednią liczbę punktów lojalnościowych i w zależności od tego jest inna specyfikacja pauzowania.

Serwis aplikacyjny

  • Nie zawiera logiki domenowej (koordynacja biznesu)

  • Komunikuje się z zewnętrznymi systemami

  • Zajmuje się logowaniem, transakcjami, autoryzacją, błędami

  • Operacje typu bulk

Ten serwis wyjmuje dane z bazy danych i zapisuje je w bazie. Przeprowadza więc operacje na warstwie aplikacyjnej.

Last updated

Was this helpful?