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 Posti Tag.
Postzajmuje się tworzeniem postów, usuwaniem postów, aktualizowaniem postów itp.
Tagzajmuje 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 Postklasa może mieć funkcję, która przyjmuje Tagjako parametr, a następnie przechowuje ją na liście znaczników. Z drugiej strony Tagklasa może mieć funkcję, która przyjmuje Postjako parametr i łączy z Tagwł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ą?