Dzisiaj przyszedł czas na pierwszy wzorzec obiektowy – aktywny rekord(AR). Zaczynamy od diagramu klas:
W przeciwieństwie do poprzednich wzorców, każda klasa definiuje fragment logiki biznesowej. Obiekty klas występują w relacji jeden do jednego względem wierszy w tabeli. Klasa Order będzie zawierała zatem logikę dla konkretnego zamówienia a nie dla zbioru zamówień. Klasy tworzymy zwykle dla każdej tabeli z bazy danych a ich instancje jak już wspomniałem dla każdego przetwarzanego wiersza.
Warto podkreślić, że środowisko .NET wspiera wzorzec aktywny rekord poprzez narzędzia ORM – Entity Framework czy LINQ to SQL. Przykładowa klasa warstwy biznesowej, zaimplementowana za pomocą aktywnego rekordu mogłaby wyglądać następująco:
public class Client { public string FirstName {get;set;} public string LastName {get;set;} public string Email {get;set;} // logika biznesowa public int GetSubscriptionLevel() { } public int GetMaxCredit() { } }
Zalety:
- Prosta implementacja,
- Solidne wsparcie środowisk programistycznych,
- Zapobiega duplikacji logiki biznesowej,
- Rozdzielenie problemu biznesowego na obiekty zwiększa czytelność kodu.
Wady:
- Rozdrobnienie klas (podobnie jak w przypadku TM),
- Wymaga wprowadzenia dodatkowej klasy w celu wyeksponowania danych przez usługę sieciową,
- Wzorzec zbyt mocno zorientowany na bazę danych,
- W przypadku gdy nie korzystamy z gotowych narzędzi ORM, implementacja wzorca jest bardzo skomplikowana i w takiej sytuacji znacznie lepiej zainteresować się wzorcem Domain Model.
Było by cudownie gdybyś miał ochotę i chęci dołączać do każdego wzorca przykładową implementacje do odpalenia w VS 🙂 To by było genialne połączenie praktyki(kod) z teoretyką(blog) ;).
Witam, wydaję mi się, że pojawiło się za mało informacji na temat tego wzorca. Po przeczytaniu wiedziałem tyle samo co przed przeczytaniem. Dopiero jak zajrzałem do książki Martina Fowler’a i wtedy wszystko się wyjaśniło. Nie chodzi o przepisywanie książki ale wyciągnięcie tej esencji.
Witam,
Postaram się podawać więcej szczegółów podczas pisania o następnym wzorcu – Domain Model. Do aktywnego rekordu dodam jeszcze jak można wykorzystać gotowe ORM w projektach.
Ja tez (podpinam sie do: ‘Łukasz’) chcialbym prosic o bardziej rozbudowany kod, albo lepiej przykladowa prosta, aplikacje w VS. Bardzo fajny blog i artykuły, ale po ich przeczytaniu i tak najczesciej musze szukac konkretnych przykladow i zastosowan w tutorialach na innych stronach. Bo na podstawie czesciowego kodu, nie zawsze jestem w stanie zlozyc go w sesnowna calosc. (Nie zebym byl len, ale niekiedy ciezko jest znalesc i gdzie indziej jakies konkrety.)