Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%)
|
Cześć, mam problem z decyzją, czy zastosować kompozycję czy dziedziczenie.
Stan aktualny: MatchInterface (interface) Match (class, implementuje MatchInterface) Chciałbym stworzyć nowy rodzaj Matcha (dopasowania), który zyskuje nową metodę "getName()" oraz argument konstruktora względem klasy Match. W tym celu dodałem nowy interface oraz klasę: NamedMatchInterface (interface dziedziczący po MatchInterface dodający nową metodą getNamed()) NamedMatch (class, implementuje NamedMatchInterface) Proszę nie zwracać uwagi na na nazewnictwo, jest to PSR ale nie wykluczone, że zmienię tę konwencję, bo mi trochę nie odpowiada. Moje pytanie brzmi: klasa "NamedMatch" powinna dziedziczyć po klasie "Match" i dodawać nową metodę oraz nadpisać konstruktor, czy jednak zastosować kompozycję? Z punktu widzenia testów jednostkowych oraz możliwości rozwoju skłaniam się do kompozycji, jednak chciałbym poznać Wasze zdanie. Edit: Niby to powinna być kompozycja, bo dochodzi nowa metoda, jednak 4 inne metody są identyczne jak w klasie Match i w przypadku zastosowania kompozycji będą po prostu proxowane do klasy Match. Ten post edytował lukaskolista 4.12.2016, 14:24:52 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
@offtop
PSR nie definiuje standardu nazewnictwa klas, interfejsów itd (IMG:style_emoticons/default/smile.gif) Wspomniane było o tym kiedyś, ale w kontekście nazewnictwa dla samego PSR, a w projekcie można przyjąć sobie jaki chcesz standard, ja ostatnio preferuje bez suffixów, według mnie tak jest lepiej:
niż:
Bo tak jasno mówisz że to jest obiekt danego typu a nie jakiś interfejs |
|
|
|
lukaskolista Kompozycja vs dziedziczenie 4.12.2016, 14:23:10
rafkon1990 Kompozycję stosuje się wtedy, gdy między klasami z... 4.12.2016, 14:59:32
lukaskolista Dokładnie na odwrót - kompozycja. Nowa metoda nie ... 4.12.2016, 15:14:45 
rafkon1990 Cytat(lukaskolista @ 4.12.2016, 15:14... 4.12.2016, 16:29:42
Pyton_000 NamedMatchInterface powinien rozszerzać MatchInter... 4.12.2016, 15:22:14
lukaskolista CytatNamedMatchInterface powinien rozszerzać Match... 4.12.2016, 15:28:13
Pyton_000 Ok spoko. Ja bym zastosował dziedziczenie. Nie war... 4.12.2016, 15:40:54
lukaskolista Teraz jeszcze zostaje kwestia interfaceow. Czy Nam... 4.12.2016, 18:25:14
Pyton_000 Raczej powinien dziedziczyć, tym bardziej że kontr... 4.12.2016, 18:26:55
lukaskolista Chyba tak jak piszesz interface powinien dziedzicz... 4.12.2016, 20:02:25
Pyton_000 Normalnie. Testujesz klasę której używasz. Więc je... 4.12.2016, 20:17:44
Pilsener Cytatczy zastosować kompozycję czy dziedziczenie. ... 5.12.2016, 09:13:27
lukaskolista Błędnie założyłeś, że te obiekty są usługami. Komp... 5.12.2016, 10:46:27
Pyton_000 Widzisz... I tu jest problem
Bo wg. Ciebie oczek... 9.12.2016, 15:42:18 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 10:00 |