( turul16 | 2011. 07. 19., k - 07:52 )

"Figyeljük meg, hogy mivel a PHP nem képes a visszatérési értékek type casting-jára, nem tudjuk elvárni a klienstől, hogy a getCardPayment() és getVirtualPayment() visszatérési értékei a PaymentInterface egyik megvalósítása legyen. Ez a nyelv hibája, amit az osztályunk dokumentációjával kell kompenzálnunk és megkövetelnünk, hogy minden esetben ilyen osztállyal tárjen vissza a kliens megvalósítása is. "

"ezért a másik fejlesztő által írt kódot, ami az én osztályaimat használja, kliens kódnak fogom nevezni."

Ha jol ertem te vagy a facktory szerzoje, es aki hasznalja az a kliens.
Elvarjuk toled, mint a factary mogott levo kod szerzojetol, hogy ne szopassd a clienseidet. :)
Mivel peldadban a konkret facktorikat a cliens hozza letre, igy sajat magat szivathatja csak. :) . Hacsak itt nincs meg egy cliense a cliensnek... ekkor lasd elzo elvaras.

A legtobb cliens, talan megbizik benned, vagy megelegszik, ha van process() implementalva, az interface tenyleges implementalasa teljesen lenyegtelen szamara. See also: <duck typig>

A bizalmatlanabbak mindig ellenorozhetik, hogy a megfelelo interfacet implementalja -e a kapott peldany. pl.: if($pay implements PaymentInterface) {$pay->process();} eles { echo "Your factory is s*cks! PaymentInterface not implemented!
"; die();}
A rendszeres bizalmatlankodok kiszervezhetik akkar fuggvenybe is. :)

Amit nem lehet megirni assemblyben, azt nem lehet megirni.