Autor | Zpráva | ||
---|---|---|---|
Keilew Profil |
#1 · Zasláno: 25. 3. 2010, 09:38:39 · Upravil/a: Keilew
Co je z pohledu OOP čistší? Skládat interface do jednoho a to implementovat, nebo jít cestou dílčích interface? Viz příklad:
interface IUmiMluvit { } interface IUmiPsatNaStroji { } interface IUmiVaritKafe { } interface ISekretarka extends IUmiMuvit, IUmiPsatNaStroji, IUmiVaritKafe { } class Sekretarka implements ISekretarka { } nebo class Sekretarka implements IUmiMuvit, IUmiPsatNaStroji, IUmiVaritKafe { } |
||
kajaman Profil |
#2 · Zasláno: 25. 3. 2010, 10:03:13
no, podle mě PHP neumí vícenásobnou dědičnost
|
||
Keilew Profil |
#3 · Zasláno: 25. 3. 2010, 10:12:33
kajaman:
U tříd ne, u interface samozřejmě ano. To by pak byly interface ze hry úplně, ono bohatě stačí, že neumějí překrývat metody. |
||
kajaman Profil |
#4 · Zasláno: 25. 3. 2010, 10:14:16
a tak to jsem nevěděl, tak se omlouvám a díky za info :-)
|
||
Keilew Profil |
#5 · Zasláno: 25. 3. 2010, 20:23:31
Nechci vypadat netrpělivě, ale nikdo nic?
|
||
vrtakcz Profil |
#6 · Zasláno: 25. 3. 2010, 20:36:54 · Upravil/a: vrtakcz
No ono to není tak snadné ale asi takhle...
Pokud by ISekretarka IUmiMuvit, IUmiPsatNaStroji, IUmiVaritKafe |
||
Keilew Profil |
#7 · Zasláno: 25. 3. 2010, 21:10:25
No ale někdy se ti zase hodí, když můžeš definovat metodu:
public function metoda(ISekretarka $val) {} přičemž očekáváš zároveň že $val bude umět mluvit i psát na stroji. V metodách je vždy lepší typ definovat dle mého interfacem... |
||
Majkl578 Profil |
#8 · Zasláno: 25. 3. 2010, 21:19:52
Pokud budu mít jen jednu třídu, která implementuje ISekretarka, tak to, řekl bych, postrádá smysl. Můžeš použít rovnou Sekretarka $val.
Smysl by to mělo, kdyby ISekretarka implementovalo víc tříd. class ManazerovaSekretarka implements ISekretarka {...} class SpravcovaSekretarka implements ISekretarka {...} Kde obě by dělaly něco jiného, ale API by bylo stejné. |
||
Keilew Profil |
#9 · Zasláno: 25. 3. 2010, 21:30:05
Majkl578:
To není dobrej přístup. Má se programovat zásadně proti rozhraní, protože pak se ti za X měsíců stane, že si tam doděláš tu jinou Sekretarku a pak se budeš vrtat v celým kódu a hledat metody, které mají Sekretarka $val a přepisovat to. A tím jsem si možná odpověděl :-) |
||
blizzboz Profil |
#10 · Zasláno: 26. 3. 2010, 00:59:16
Keilew:
ani jedno neni čistejšie... proste použiješ to riešenie ktoré sa ti v konkrétnej situácii viac hodí. |
||
Časová prodleva: 14 let
|
0