Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder

Kolemjdouci

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #30 kdy: 19. 07. 2016, 21:05:11 »
Co sa tyka Singletonu, tak splna principy OOP, co nemozno povedat o statickej triede.

Nevýhodou Singletonu je, že se nedá použít standardní operátor new, neboť konstruktor je privátní. Je také docela problém mu předat nějaké parametry, například přihlašovací údaje pro připojení k databázi.

Proč by mi proboha mělo vadit že nemůžu použít new? Singleton přeci má vytvořit (včetně jeho nakonfigurování) dependency injection framework (např. Spring odjakživa nebo EJB od Java EE 6), s tím se přeci snad už v dnešní době nikdo nedělá ručně!


javaman

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #31 kdy: 19. 07. 2016, 21:05:52 »
On Kit totiž neumí programovat a plácá pátý přes devátý. Ale věřim, že děti ve škole mu to žerou, protože se u toho tváří cool. Sem tam naschvál splete pojmy, aby dodal na magičnosti svých vět :D

Kit

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #32 kdy: 19. 07. 2016, 21:17:07 »
Co sa tyka Singletonu, tak splna principy OOP, co nemozno povedat o statickej triede.

Nevýhodou Singletonu je, že se nedá použít standardní operátor new, neboť konstruktor je privátní. Je také docela problém mu předat nějaké parametry, například přihlašovací údaje pro připojení k databázi.

Proč by mi proboha mělo vadit že nemůžu použít new? Singleton přeci má vytvořit (včetně jeho nakonfigurování) dependency injection framework (např. Spring odjakživa nebo EJB od Java EE 6), s tím se přeci snad už v dnešní době nikdo nedělá ručně!

Proč ti vadí, když operátor new používám? Proč ti vadí, že Singleton (až na výjimky viz výše) jednoduše nepotřebuji a přesto mám jistotu, že instance bude právě jedna?

Kolemjdouci

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #33 kdy: 19. 07. 2016, 21:38:17 »
Proč by mi proboha mělo vadit že nemůžu použít new? Singleton přeci má vytvořit (včetně jeho nakonfigurování) dependency injection framework (např. Spring odjakživa nebo EJB od Java EE 6), s tím se přeci snad už v dnešní době nikdo nedělá ručně!

Proč ti vadí, když operátor new používám? Proč ti vadí, že Singleton (až na výjimky viz výše) jednoduše nepotřebuji a přesto mám jistotu, že instance bude právě jedna?

Nemá smysl znovu vymýšlet co už je vymyšlené. Sice může být zajímavé si všechno programovat sám, ale aby člověk byl v praxi použitelný jako součást týmu tak musí dodržovat standardy. Když si nějaký objekt udělám pomocí new tak mám zodpovědnost za to že ho i správně nakonfiguruji (nejspíš parametry konstruktoru nebo settery), správně ho inicializuji (až poté co budou nakonfigurované a inicializované všechny jeho závislosti) a nakonec udělám správně shutdown (dřív než shutdown všech jeho závislostí). Dělat se s tímhle na každém projektu znovu a znovu je příšerně neefektivní a vytvoří to spoustu špatně udržovatelného kódu, proto vznikly standardizované postupy jak na to. Nejrozšířenější je asi Spring Framework nebo novější verze Java EE (EJB).

M.

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #34 kdy: 19. 07. 2016, 21:40:35 »
Ohledně toho singletonu, já ho pochopil a přišel mu na chuť až po hodně dlouhé době, asi nakonec i celé OOP vezmu na milost, pokud budou existovat i další povedené vzory, jako je Signleton: https://www.malts.com/en-ca/our-whisky-collection/the-singleton/


Kit

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #35 kdy: 19. 07. 2016, 22:05:09 »
Nemá smysl znovu vymýšlet co už je vymyšlené. Sice může být zajímavé si všechno programovat sám, ale aby člověk byl v praxi použitelný jako součást týmu tak musí dodržovat standardy. Když si nějaký objekt udělám pomocí new tak mám zodpovědnost za to že ho i správně nakonfiguruji (nejspíš parametry konstruktoru nebo settery), správně ho inicializuji (až poté co budou nakonfigurované a inicializované všechny jeho závislosti) a nakonec udělám správně shutdown (dřív než shutdown všech jeho závislostí). Dělat se s tímhle na každém projektu znovu a znovu je příšerně neefektivní a vytvoří to spoustu špatně udržovatelného kódu, proto vznikly standardizované postupy jak na to. Nejrozšířenější je asi Spring Framework nebo novější verze Java EE (EJB).

A kdo říká, že vymýšlím vymyšlené? Používám přesně to, co je vymyšlené. Dependency Injection. Vzor Singleton k tomu nepotřebuji.

Pokud vytvořím objekt pomocí operátoru new, je již nakonfigurován. Nevytvářím nevalidní objekty. Je na to dostatek běžných vzorů, jejichž použití je triviální. Běžně je kopíruji mezi projekty, zpravidla ani nepotřebují úpravy. Je to velmi snadno udržovatelné, neboť je to velmi štíhlé a stabilní.

javaman

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #36 kdy: 19. 07. 2016, 22:06:54 »
 ;D

gl

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #37 kdy: 19. 07. 2016, 22:37:47 »
Radši zůstanu lopatou a budu používat jazyky kde podobné problémy neexistují.

stpd

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #38 kdy: 19. 07. 2016, 22:46:16 »
Radši zůstanu lopatou a budu používat jazyky kde podobné problémy neexistují.

Ktoré sú to jazyky?

xxx

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #39 kdy: 19. 07. 2016, 22:49:58 »
A kdo říká, že vymýšlím vymyšlené? Používám přesně to, co je vymyšlené. Dependency Injection. Vzor Singleton k tomu nepotřebuji.

Ked nieco nepotrebujes, tak to nepouzivaj. Ja nepouzivam Flyweight a nepotentujem sa z toho. Nemam proti nemu nic osobne, proste som neriesil problem, kde by sa to hodil.

Aspon trochu k veci: sucastou kazdeho vzoru je to, aky problem riesi a v akom kontexte je mozne ho pouzit. Z tohoto sa treba odpichnut. Bohuzial by som uvital anglicku terminologiu. Nem tudom, mi ez a "přepravka"?

gl

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #40 kdy: 19. 07. 2016, 22:51:12 »
Radši zůstanu lopatou a budu používat jazyky kde podobné problémy neexistují.

Ktoré sú to jazyky?

Většina dynamických jazyků. například http://mishadoff.com/blog/clojure-design-patterns/

Kit

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #41 kdy: 19. 07. 2016, 23:17:42 »
A kdo říká, že vymýšlím vymyšlené? Používám přesně to, co je vymyšlené. Dependency Injection. Vzor Singleton k tomu nepotřebuji.

Ked nieco nepotrebujes, tak to nepouzivaj. Ja nepouzivam Flyweight a nepotentujem sa z toho. Nemam proti nemu nic osobne, proste som neriesil problem, kde by sa to hodil.

Aspon trochu k veci: sucastou kazdeho vzoru je to, aky problem riesi a v akom kontexte je mozne ho pouzit. Z tohoto sa treba odpichnut. Bohuzial by som uvital anglicku terminologiu. Nem tudom, mi ez a "přepravka"?

Flyweight je skutečně jen na speciální věci, protože utíká od myšlenky OOP. Někdy je však výkonová optimalizace nutná. Pokud ho programátor použije s vědomím, že je to v podstatě procedurální záležitost, je to OK.

Pod pojmem Přepravka se skrývá vzor Messenger. Používám ho velmi často pro prezentaci dat objektu ve strukturované podobě. Mnohé základní knihovny produkují Messenger jako jedinou možnost získání dat z objektu. Je to velmi praktické a rychlé.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #42 kdy: 20. 07. 2016, 01:37:22 »
Radši zůstanu lopatou a budu používat jazyky kde podobné problémy neexistují.
Stačí vzít nějaký funkcionální, tam je jen jeden návrhový vzor - monáda. Ta se dá naroubovat na všechno (dobře, trochu přeháním, ale ne moc). OOP je v tomto docela zmatek.

gl

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #43 kdy: 20. 07. 2016, 02:08:38 »
Radši zůstanu lopatou a budu používat jazyky kde podobné problémy neexistují.
Stačí vzít nějaký funkcionální, tam je jen jeden návrhový vzor - monáda. Ta se dá naroubovat na všechno (dobře, trochu přeháním, ale ne moc). OOP je v tomto docela zmatek.

Nutnost používání monád je také problém, který v jiných jazycích neexistuje.

Kit

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #44 kdy: 20. 07. 2016, 07:00:12 »
Radši zůstanu lopatou a budu používat jazyky kde podobné problémy neexistují.
Stačí vzít nějaký funkcionální, tam je jen jeden návrhový vzor - monáda. Ta se dá naroubovat na všechno (dobře, trochu přeháním, ale ne moc). OOP je v tomto docela zmatek.

Však on se časem najde nějaký blb, který tohle nebude vědět a další návrhové vzory tam udělá! :D