Rozważ ten przykład:
Mam stronę internetową Pozwala użytkownikom tworzyć posty (mogą być dowolne) i dodawać tagi opisujące posty. W kodzie mam dwie klasy reprezentujące post i tagi. Nazwijmy te klasy Post
i Tag
.
Post
zajmuje się tworzeniem postów, usuwaniem postów, aktualizowaniem postów itp.
Tag
zajmuje się tworzeniem tagów, usuwaniem tagów, aktualizowaniem tagów itp.
Brak jednej operacji. Łączenie tagów z postami. Walczę z tym, kto powinien wykonać tę operację. Może pasować równie dobrze w obu klasach.
Z jednej strony Post
klasa może mieć funkcję, która przyjmuje Tag
jako parametr, a następnie przechowuje ją na liście znaczników. Z drugiej strony Tag
klasa może mieć funkcję, która przyjmuje Post
jako parametr i łączy z Tag
właściwością Post
.
Powyższe to tylko przykład mojego problemu. Tak naprawdę mam do czynienia z wieloma podobnymi klasami. Może pasować równie dobrze w obu. Poza faktem umieszczenia funkcjonalności w obu klasach, jakie konwencje lub style projektowania istnieją, aby pomóc mi rozwiązać ten problem. Zakładam, że musi być coś poza wybraniem jednego?
Może umieszczenie go w obu klasach jest prawidłową odpowiedzią?