Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Domain drive design, pytanie o agregaty
coolos
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.04.2009

Ostrzeżenie: (0%)
-----


Witam,

Mam mały problem odnośnie rozplanowania klasy NEWS (klasy aktualności) oraz klasy NEWS_CATEGORY (kategorii aktualności).

Jako że:
- news posiada jedną kategorię do której może być przypisany,
- jedna kategoria posiada wiele newsów czyli zachodzi relacja jeden do wielu.

nie wiem czy agragetem głównym "aggregate root" w tym przypadku będzie klasa NEWS czy też NEWS_CATEGORY.

Myślę że powinno to wyglądać mniej więcej tak jak poniżej ale pewien nie jestem:

  1. class NEWS{
  2.  
  3. //jakies pola opisujace newsa
  4. private $id;
  5. private $title;
  6.  
  7. //tutaj agregat kategorii
  8. private $category;
  9. }
  10.  
  11.  
  12. class NEWS_CATEGORY{
  13. //jakies pola opisujace kategorie
  14. private $id;
  15. private $name;
  16.  
  17. //tutaj kolekcja newsow
  18. private $news_collection;
  19. }


Nie wiem też czy lepiej tworzyć repozytorium zarówno dla newsów jak i kategorii czy też stworzyć wspólne (podobnie ma się sprawa z fabryką). Wydaje mi się że skoro kateogie newsów tyczą się wyłącznie newsów to można zrobić wspólne repozytorium.

Liczę na jakieś wskazówki,
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Inscure
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 4
Dołączył: 18.09.2010

Ostrzeżenie: (0%)
-----


To zależy od wielkości tych klas. Jeżeli zrobisz wszystko w jednej i będziesz musiał dawać prefiks "category" dla metod dotyczących kategorii newsów by się nie pogubić, to lepszym rozwiązaniem jest zrobienie tego w sposób jaki zaprezentowałeś. Zaś w przypadku, gdy cała klasa ograniczy się do 5-6 metod, to byłby to nieco przerost formy nad treścią, aczkolwiek modyfikacja byłaby łatwiejsza. Takie moje skromne zdanie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 07:18