Čas:18.10.2010 18:30:16
Od:ARny
Předmět:nechapem aky to ma vyznam
menit konstruktory na staticke factory metody okrem singlton objektov?
Čas:18.10.2010 19:15:59
Od:zdevra
Předmět:Re: nechapem aky to ma vyznam
Ma to rozne vyhody. V ObjectiveC je napriklad cez staticku factory metodu vytvarany kazdy jeden objekt. Totizto nie vsetko si mozes v konstruktore dovolit. Clovek sa moze s tym pekne zamotat ked zacne v kosntruktore pouzivat prekryte metody. Taktiez kod sa nepise len raz, casto krat sa supportuje, podlieha zmenam. Ja som si uz neraz povedal ze factory metoda by mi usetrila prechadzanie kodu a nahradzovanie new NejakyObject() za new NovyObjekt() ktory je extendovany z NejakyObjekt. NIekedy je dobre mat kontrolu nad tvorbou instancii. Konstruktor stale vytvori novu instanciu. Singleton je jeden zo sposobov pouzitia static factory method. Mozes mat takto riesene cache-ovanie alebo nejaky pooling atd.. Je to taky zjednoduseny factory pattern. Taktiez konsturktor nema meno. To je pripad napriklad String.valueOf(). Ak som nieco zmrvil tak ma opravte :)
Čas:18.10.2010 21:52:33
Od:Zdeněk Troníček
Předmět:Re: nechapem aky to ma vyznam
Ještě bych doplnil: protože tovární metoda nemusí vracet přesně daný typ, ale může vrátit libovolného potomka, lze tovární metody použít pro oddělení rozhraní a implementace. Takto se to používá např. v JDBC. Další výhoda je v tom, že u továrních metod nejsme omezeni tím, že musí mít různé parametry, jako je tomu u konstruktorů. Nelze mít dva konstruktory s parametry stejného typu ale různého významu. U tovární metody to není problém, protože tovární metody se mohou jmenovat různě.
Čas:19.10.2010 10:53:35
Od:Peter
Předmět:Preklad
aky vyznam ma pouzitie vyrazu "tovární metoda"? V programovani je lepsie sa drzat anglickych oznaceni a teda "factory...". prekladanie niektorych vyrazov je kontraproduktivne
Čas:20.10.2010 23:56:16
Od:Ladislav Thon
Předmět:víc tříd Position
Když tak na to koukám... Identifier [name: "Position"] je to vůbec typově bezpečné? Nikde nevidím, že by se nahrazovala volání konstruktoru jedné konkrétní třídy com.example.Position, ale všech tříd Position. Což je u nástroje pro _refaktoring_ prostě killer. Samozřejmě není úplně hezké, aby projekt obsahoval víc tříd se stejným názvem, ale vyhnout se tomu pořádně nedá, zvlášť u tak generických slov jako je právě Position. Jak to teda je? Přiznávám předem, že RefactoringNG jsem nijak nestudoval (fakt netuším, co by mne mohlo přimět k psaní vlastních transformací AST), takže se možná pletu.
Čas:21.10.2010 6:42:41
Od:Zdeněk Troníček
Předmět:Re: víc tříd Position
Rozlišit mezi více třídami Position lze pomocí atributu qualifiedName. Např. Identifier[name: "Position", qualifiedName: "com.example.Position"] nebo jen Identifier[qualifiedName: "com.example.Position"], což je to samé, protože hodnota atributu name je dána hodnotou qualifiedName. A co by Tě mohlo přimět k napsání vlastního refaktorizační pravidla? Např. potřeba nějaké refaktorizace, kterou IDE nenabízí. Nebo potřeba vyhledat kód s danou strukturou.
Čas:21.10.2010 14:18:43
Od:Ladislav Thon
Předmět:Re: Re: víc tříd Position
Díky, já tušil, že tam FQN někde bude :-) Kdybych se někdy dostal do situace, jakou popisuješ, asi bych nejdřív sáhnul po http://www.jetbrains.com/idea/documentation/ssr.html. Mimochodem, Replace Constructor with Factory Method tady v menu vidím... :-)
Čas:21.10.2010 18:23:05
Od:Zdeněk Troníček
Předmět:Re: Re: Re: víc tříd Position
No jasně, na běžné refaktorování je lepší IDE. RefactoringNG se mu nesnaží konkurovat, protože je jasné, že výběr položky z menu je jednodušší. RefactoringNG naproti tomu umožňuje vytvářet dávky, které obsahují několik změn, a ty pak snadno provádět. To je výhodné, pokud nám tyto dávky připraví např. autor knihovny. Pro přechod k nové verzi knihovny pak může postačovat spuštění takové dávky.
Diskuzní příspěvky
ARny nechapem aky to ma vyznam
zdevra   Re: nechapem aky to ma vyznam
Zdeněk Troníček   Re: nechapem aky to ma vyznam
Peter Preklad
Ladislav Thon víc tříd Position
Zdeněk Troníček   Re: víc tříd Position
Ladislav Thon   Re: Re: víc tříd Position
Zdeněk Troníček   Re: Re: Re: víc tříd Position