|
PHP PHP aplikacije, Smarty, PEAR |
|
Alati teme | Način prikaza |
|
24. 02. 2013. | #1 |
profesionalac
Professional
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
|
Apsraktna klasa sa svim implementiranim metodama, kad koristiti ?
Pozdrav,
U magentovom coru postoji jako puno klasa koje su apstraktne, a imaju sve metode implementirane npr. a postoje takve klase i u javi npr. Predpostavljam da je to posledica Template paterna sto je OK. Medjutim, vidim da dosta developera proglasava klasu apstraktnom samo da bi zabranio njeno instanciranje (iako su sve metode implementirane), da li je to ispravno? U kojim sve slucajevima treba imati apstraktnu klasu bez apstraktnih metoda i da li vi to koristite? Poslednja izmena od tasmaniski : 24. 02. 2013. u 00:55. |
24. 02. 2013. | #2 |
član
Certified
|
Jedina takva primena (barem u java svetu), na koju sam naišao do sada, je baš Template pattern koji navodiš.
Najpoznatiji primerak je verovatno nezaobilazna klasa HttpServlet http://www.docjar.com/html/api/javax...vlet.java.html Ukoliko bih hteo da zabranim instanciranje neke klase, proglasio bih njen konstruktor privatnim.
__________________
http://www.svlada.com |
24. 02. 2013. | #3 |
profesionalac
Professional
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
|
Iskreno prvi put sam se susreo sa ovim slucajem i tek sad vidim da dosta ljudi tako koristi abstrac class bez ijedne abstract metode, pa i u drugim paternima (npr. decoration).
Ali i pored toga u potpunosti mi je neprirodno da u tu svrhu koristim apstraktnu klasu.. C++ bi izbacio error ako bi pokusao da napravis abstract klasu sa svim konkretnim metodama ... fina diskusija se razvila o tome i na: http://www.linkedin.com/groups/We-ha...26.S.112043042 Samo mala napomena da konstruktor treba da bude protected - nije dovoljno private.. al tako bih i ja to uradio ... |
28. 02. 2013. | #4 |
član
Certified
|
Od kako si pokrenuo ovu temu, baš gledam hoću li naleteti u svakodnevnom radu na ovak slučaj.
I što je najgore nailazim. Klasa iz OpenSAMLa => org.opensaml.saml2.binding.encoding.BaseSAML2Messa geEncoder
__________________
http://www.svlada.com |
28. 02. 2013. | #6 |
expert
Grand Master
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
|
PHP nije Java.
I otkad je Magento primjer dobrog codea? Je li želiš da budeš "Magento Expert" ili? Poslednja izmena od webarto : 28. 02. 2013. u 23:36. |
01. 03. 2013. | #7 |
profesionalac
Professional
Datum učlanjenja: 08.11.2010
Poruke: 211
Hvala: 68
78 "Hvala" u 32 poruka
|
Racunao sam da Magento core developeri ipak nesto znaju
Ne planiram da se bavim Magentom skorije, ali dosta ispitujem kakava je arhitektura ostalih open source resenja, ne bi li dobio inspiraciju i nesto upotrebio u svom sistemu/backendu. Cesto nailazim na ovaj slucaj, pa bih voleo da cujem nekoga ko tako radi da mi objasni sto? Jablane, mozes molimte biti malo precizniji, ti ne koristis apstraktne klase uopste ? |
02. 03. 2013. | #8 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Pa koristim kad radim u npr. Javi, ali ne koristim kad radim u one-who-must-not-be-named jeziku, jer u istom nemaju smisla. Jezik mi ne brani da pozovem metodu koja će biti implementirana u potklasama, a ako želim da zabranim instanciranje klase, baciću exception u konstruktoru.
__________________
blog Poslednja izmena od jablan : 02. 03. 2013. u 21:48. |
03. 03. 2013. | #9 |
novi klan
Professional
Datum učlanjenja: 03.02.2007
Poruke: 326
Hvala: 43
427 "Hvala" u 50 poruka
|
Jedno pet puta već čitam pokušavajući da shvatim tvoj argument, ali mi ne uspeva. Daj, molim te, objasni mi šta hoćeš da kažeš...
__________________
We professional we dealin' with business |
03. 03. 2013. | #10 | |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Citat:
Primer: Ti u PHP-u možeš da uradiš sledeće: Kôd:
class Duck{ function quack(){ echo "Quack\n";} function fly(){ echo "Flap, Flap\n";} } class Person{ function __construct($name){$this->name=$name;} function quack(){echo "{$this->name} walks in the forest and imitates ducks to draw them\n";} function fly(){ echo "{$this->name} takes an airplane\n";} } function QuackAndFly($obj){$obj->quack(); $obj->fly();} QuackAndFly(new Duck()); QuackAndFly(new Person("Jules Verne")); Dakle, interesuje me zašto je u PHP dodat feature koji je u statičkim jezicima tu samo kao nužno zlo, upravo zato što su statički? Nadam se da sam jasniji.
__________________
blog Poslednja izmena od jablan : 03. 03. 2013. u 18:52. |
|
|
|