Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 460 Pomógł: 49 Dołączył: 5.06.2011 Ostrzeżenie: (0%)
|
Kiedy klasy dziedziczące mają takie same metody, to lepiej by dziedziczyły te metody od klasy nadrzędnej, czy miały te metody "przykazane" przez interface i umieszczone w sobie? Takie 2 rozwiązania pokazuję poniżej. Które jest bardziej poprawne?
Z góry dziękuję |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%)
|
W przykładzie, który podałeś klasy są identyczne dlatego nie ma sensu ich rozbijać na dwie. Jeśli część metod byłaby wspólna (dokładnie takie same metody łącznie z implementacją), wtedy te metody mogłyby być w klasie nadrzędnej, a w klasach pochodnych umieściłbyś różnice.
W twoim przypadku powinna to być jedna klasa. Czy interfejs byłby tam przydatny to zależy. Można by napisać więcej gdybyśmy znali szerszy kontekst, jaką aplikację piszesz i jak obiekty tej klasy są używane. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 460 Pomógł: 49 Dołączył: 5.06.2011 Ostrzeżenie: (0%)
|
W przykładzie, który podałeś klasy są identyczne dlatego nie ma sensu ich rozbijać na dwie. No rzeczywiście. Kontekst mojego pytania jest taki, że czytam sobie tutorial o design patterns i tam napotkałem na takie "zażądanie" metod w klasie abstrakcyjnej, po czym w klasach dziedziczących zastosowane identyczne metody. Pomyślałem, że te identyczne metody mogłyby być jedynie dziedziczone z klasy abstrakcyjnej, a nie deklarowane w każdej klasie konkretnej. (Tu w przykładzie zastosowałem interface, a nie klasę abstrakcyjną, co w sumie byłoby chyba analogią). Link do tutoriala: https://wwphp-fb.github.io/faq/object-orien...stract-factory/ Definicja klasy abstrakcyjnej wygląda tak:
Cały kod tak:
Ten post edytował trzczy 12.12.2015, 15:33:46 |
|
|
|
trzczy Inheritance vs. interface dla takich samych metod. 12.12.2015, 13:32:56
Fred1485 Tak moimi słowami, klasę abstrakcyjną czy interfej... 12.12.2015, 15:41:38
Comandeer Osobiście spotkałem się z podejściem, gdzie interf... 12.12.2015, 19:00:55
trzczy Dzięki za odpowiedzi. Dla mnie wynika z tego, że n... 12.12.2015, 22:37:35
Damonsson To nie jest kwestia żadnego wyboru. Do czego inneg... 13.12.2015, 00:36:28 
trzczy Damonsson, nie rozumiesz pytania. Chodzi o dublowa... 13.12.2015, 01:07:19
viking Ale Damansson dobrze Ci odpowiedział i według mnie... 13.12.2015, 10:42:44 
trzczy Cytat(viking @ 13.12.2015, 10:42:44 )... 13.12.2015, 18:42:16
Comandeer CytatW interface nie ma definicji metod. Są nazwy ... 13.12.2015, 18:53:29
Pyton_000 O jakim dublowaniu mówisz. Bo tutaj jedynie dublow... 13.12.2015, 19:08:52
droslaw trzczy, Damansson ma rację, w tutorialu żadne meto... 13.12.2015, 22:18:07
trzczy Cytat(Pyton_000 @ 13.12.2015, 19:08:5... 14.12.2015, 08:28:08
Pyton_000 Settery i gettery to nie problem. O ile nie mają s... 14.12.2015, 08:33:13
droslaw Cytat(trzczy @ 14.12.2015, 08:28:08 )... 14.12.2015, 12:16:07
Matrix12 W przykładzie gdzie implementujesz interfejs chodz... 15.12.2015, 08:00:27 
trzczy Jeszcze się gubię w tym branżowym słownictwie...
... 17.12.2015, 01:13:47
Pyton_000 Możesz nazwać jak chcesz np:
StorageInterface
Sto... 17.12.2015, 10:06:18 
trzczy Cytat(Pyton_000 @ 17.12.2015, 10:06:1... 17.12.2015, 12:35:52
Pyton_000 tak, tylko weź pod uwagę to że samego Interface ni... 17.12.2015, 12:37:16
viking Nie było przypadkiem w którymś PSR że interface ma... 17.12.2015, 12:50:28
Pyton_000 Było
https://github.com/php-fig/fig-standards/bl... 17.12.2015, 14:01:21 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 11:27 |