Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Interferfejs, wielodziedziczenie
naitsabes
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 5
Dołączył: 10.09.2010

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


Czesc, jakis czas temu przeczytałem, że jedyna opcja dla wielodziedziczenia jest Implementowanie interfejsu...


Poczytałem, ok stworzyłem niby interfejs, ale nie mam pojecia jak to wszystko działa.

Wydaje mi sie ze to działa w ten sposob

interfejs
{
funkcja()
}

clasa dajaca do interfejsu
{
funkcja()
{}
}


i pozniej mozna pobrac z interfejsu ta funkcje. Wydawało mi sie, że dobrze zrozumiałem to ale niestety nie moge stworzyc zadnego kodu, byc moze zle pojąłem sposob działania interfejsu.


Bylbym wdzieczny gdyby ktos zrobil jakis prosty przyklad, samo echo i zmienne, jak zrobic oraz wykorzystac interfejs.
Duzy czytalem, napisanie tutaj to ostatecznosc.


Dziekuje za cierpliwosc i przepraszam za prostote pytania


Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@cepa: Bardzo ładny przykład jednego z najgorszych możliwych kodów jaki może powstać.

Interfejsy nie są substytutem dla wielokrotnego dziedziczenia. Ogólnie nie powinieneś w ogóle chcieć korzystać z takiego rodzaju dziedziczenia. A gdy wydaje Ci się, że takie dziedziczenie ułatwiłoby Ci pracę oznacza to, iż najprawdopodobniej masz błąd w projekcie.
Go to the top of the page
+Quote Post
cepa
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 7
Dołączył: 27.01.2010

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


Cytat(Crozin @ 16.06.2011, 16:07:49 ) *
@cepa: Bardzo ładny przykład jednego z najgorszych możliwych kodów jaki może powstać.

@Crozin: Dales bardzo ladny przyklad swojej nieznajomosci wzorcow projektowych (IMG:style_emoticons/default/smile.gif)

to co pokazalem wyzej to nic innego jak Dekorator, a stosowane w dokladnie tej formie co wyzej jest np: w Doctrine - behaviours, i jest naprawde bardzo przydatne (IMG:style_emoticons/default/smile.gif)

problem z wielodziedziczeniem wynikal stad ze bylo naduzywane w C++, wymagalo rzutowania, i rodzilo wiele problemow np: http://en.wikipedia.org/wiki/Diamond_problem

Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(cepa @ 16.06.2011, 16:44:01 ) *
@Crozin: Dales bardzo ladny przyklad swojej nieznajomosci wzorcow projektowych (IMG:style_emoticons/default/smile.gif)

Chciałbym w tym miejscu sprostować, to że pokazałeś wzorzec i coś takiego jest wzorcem, nie znaczy od razu że jest poprawny pod względem logiki i przejrzystości kodu, tak samo jak odradza się używania singletonów.
Go to the top of the page
+Quote Post
cepa
post
Post #5





Grupa: Zarejestrowani
Postów: 125
Pomógł: 7
Dołączył: 27.01.2010

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


Cytat(Fifi209 @ 16.06.2011, 16:50:14 ) *
Chciałbym w tym miejscu sprostować, to że pokazałeś wzorzec i coś takiego jest wzorcem, nie znaczy od razu że jest poprawny pod względem logiki i przejrzystości kodu, tak samo jak odradza się używania singletonów.

dekorator to bezpieczna alternatywa dla wielokrotnego dziedziczenia bo nie rodzi problemow jak diament ktory wkleilem wyzej, tj: w jezyku kompilowanym dekorator eliminuje problem nakladania sie symboli metod na siebie, w php magiczne __call mozna prosto wykorzystac jako proxy dla dekoratorow, taki mechanizm umozliwia np: rozszerzanie api obiektu, idac dalej tym tropem dochodzimy do meta programowania gdzie nie tylko obiekt sie liczy ale to "z czego jest zbudowany"

singleton i inne wzorce to tylko narzedzia, nie ma zlych lub dobrych wzorcow, sa sytuacje ze nawet tak znienawidzone goto jest najlepszym rozwiazaniem

Ten post edytował cepa 16.06.2011, 15:58:50
Go to the top of the page
+Quote Post

Posty w temacie
- naitsabes   Interferfejs, wielodziedziczenie   22.05.2011, 20:16:23
- - destroyerr   Czy tutaj masz zbyt mało przykładów?   22.05.2011, 22:37:46
- - Hoku   [PHP] pobierz, plaintext interface A { functi...   22.05.2011, 22:44:48
- - el.pablo.72   Sensowne i proste rozwiązanie oferuje Framework Co...   25.05.2011, 14:59:45
- - destroyerr   @el.pablo.72 nie wprowadzaj zamieszania. Framework...   25.05.2011, 20:04:41
- - sarxos   Ale framework to chociaż porządkuje. W PHP brak je...   15.06.2011, 14:14:05
|- - Fifi209   Cytat(sarxos @ 15.06.2011, 15:14:05 )...   15.06.2011, 17:37:19
- - drPayton   A co ma piernik do wiatraka? Autor nie chce gotowc...   15.06.2011, 14:19:05
- - Speedy   Implementowanie interfejsu i wielodziedziczenie, t...   15.06.2011, 16:24:17
- - darko   ~Speedy nie do końca to takie dwie różne sprawy. I...   15.06.2011, 16:38:04
|- - Speedy   Cytat(darko @ 15.06.2011, 17:38:04 ) ...   15.06.2011, 23:34:14
- - cepa   wielodziedziczenie mozna zrobic wykorzystujac popr...   16.06.2011, 14:27:49
- - Crozin   @cepa: Bardzo ładny przykład jednego z najgorszych...   16.06.2011, 15:07:49
|- - cepa   Cytat(Crozin @ 16.06.2011, 16:07:49 )...   16.06.2011, 15:44:01
|- - Fifi209   Cytat(cepa @ 16.06.2011, 16:44:01 ) @...   16.06.2011, 15:50:14
|- - cepa   Cytat(Fifi209 @ 16.06.2011, 16:50:14 ...   16.06.2011, 15:57:31
- - Crozin   Cytat@Crozin: Dales bardzo ladny przyklad swojej n...   16.06.2011, 18:08:57
|- - cepa   Cytat(Crozin @ 16.06.2011, 19:08:57 )...   16.06.2011, 18:52:23
- - LSM   @Crozin : Czy nie uważasz że nadużycia wielodziedz...   17.06.2011, 01:13:29


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 - 11:26