Cały czas jestem w grze jeśli chodzi o konkurs 100 commitów. Czasem bywa lepiej, czasem gorzej, ale ważne, że na GitHubie co chwila dochodzą nowe, zielone kwadraciki. Niemniej mam wrażenie, że ciągle kręcę się w kółko, bo chcę napisać kod, na swój sposób, idealnie. A stara prawda mówi, że tak się przecież nie da… Dlatego będę się mocno starał, aby więcej czasu poświęcić na analizę. Dzięki temu kod będzie lepiej podzielony, a on sam w sobie będzie mógł być “brzydki” w wyznaczonych granicach. Przecież na koniec dnia nie jest ważne czy skorzystamy z Optional czy jednak przyrównamy coś do null (oczywiście w prawie wszystkich przypadkach). To tylko detal implementacyjny.

W kontekście tytułu dzisiejszego artykułu. Przepisując kilka razy swoje rozwiązanie w końcu natrafiłem na coś ciekawego. Rezerwacja od razu nie staje się faktyczną rezerwacją. Na początku procesu musimy zażądać dokonania rezerwacji. Jak to może wyglądać?

Różnica pomiędzy żądaniem rezerwacji a faktyczną rezerwacją Różnica pomiędzy żądaniem rezerwacji a faktyczną rezerwacją

Załóżmy, że chcemy zarezerwować miejsce postojowe. Wybieramy to, które nam najbardziej pasuje, wybieramy godzinę i potwierdzamy. Natomiast za chwilę się rozmyślamy i chcemy je anulować. Powinniśmy móc to zrobić bezkosztowo, prawda? Natomiast co w przypadku, gdybyśmy chcieli się wycofać z rezerwacji na 30 minut przed jej obowiązywaniem? W ten sposób przecież trzymalibyśmy miejsce przez długi okres czasu na darmo i nikt z niego nie mógł skorzystać. Może warto w takiej sytuacji “ukarać” takiego delikwenta np. częściową opłatą albo utratą punktów lojalnościowych? Wszystko pewnie zależy od modelu biznesowego. W moim przypadku właśnie tak chciałem “prowadzić” swój wymyślony biznes. Różnicą do przedstawionego wyżej przykładu jest to, że wyzwalaczem zmiany stanu (perspektywa becoming) jest czas. A dokładniej 3 nad ranem, kiedy to żądania rezerwacji stają się faktyczną rezerwacją.

Co ciekawe, jestem w trakcie lektury “Enterprise Patterns and MDA”, gdzie na stronie 283 jest właśnie mowa o ReservationRequest. Szkoda, że doszedłem do tej strony po mojej rozkminie…