IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Kdy používat statické třídy

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
tomekmichalhu:5.10.2019 10:00

Zdravím, z čistě edukativních důvodů se snažím napsat grafický engine. Samotná implementace algoritmů není problém, ale chci to mít napsaný hezky a čistě, jak se sluší na OOP. Některé části programu má jednoznačně smysl mít jako instancovatelný objekt (Scénu, GrafickyObjekt a jeho deriváty...), ale třeba logiku zodpovědnou za vykreslování bodů na canvas bych měl rád aspoň z části statickou, abych nemusel skrz celej program předávat reference na objekt kterej tam stejně bude jenom jeden. Popravdě mi ani jedna alternativa nepřijde úplně zenová. Co z toho je lepší, případně je nějaký jiný způsob jak třeba to předávání referencí někam schovat? Předem děkuji za odpovědi.

 
Odpovědět
5.10.2019 10:00
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na tomekmichalhu
Tadeáš Burda :5.10.2019 11:54

dependency injection... je to fakt super ked to vis pouzivat a nepotrebujes statiku

 
Nahoru Odpovědět
5.10.2019 11:54
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na tomekmichalhu
Tadeáš Burda :5.10.2019 11:57

DI vytvorí jednu instanci a predá ju konstruktu kdekoľvek v programe... mas len jednu a onic sa nestaraš

 
Nahoru Odpovědět
5.10.2019 11:57
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Tadeáš Burda
Lubor Pešek:5.10.2019 14:07

No, nevím, jestli se dá kontejner nazývat konstruktem:) Ale jestli dělá GUI založené na scénách atd. tak pochybuju, že dělá webovou aplikaci, takže Spring či EE asi nepoužívá.

Nahoru Odpovědět
5.10.2019 14:07
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na tomekmichalhu
Lubor Pešek:5.10.2019 14:15

Pokud chceš statikou předávat reference, tak to nebude úplně to pravé ořechové. Pokud bys měl nějaký návrhový vzor typu tovární třídy či metody, tak budiž, ale není to úplně značka ideál.
Pokud používáš statiku, tak počítej s tím, že ji může použít kdokoliv jiný v balíku a otázka je, jestli je to žádoucí.
Samozřejmě těžko se radí, když neznáme strukturu programu, ale ze zkušeností bych do statiky nerval objekty. Stejně je musíš někde inicializovat, tak bych spíš zvážil strukturu programu, než to řešit statikou. To je pochopitelně jen můj osobní názor. Řada lidí ti může říct několik příkladů, kdy se to bude hodit víc.
Je fakt, že já už jsem tak zblblý Springem, že už takové věci skutečně neřeším a používám technologie, jako například dep. injection, jak to už popisoval Tadeáš Burda:)

Jinak pokud potřebuješ předávat nějaký jednotný objekt dynamicky za běhu programu, tak zkus použít přepravku (messenger) - návrhový vzor. Ten byl vytvořen právě na takové případy.

Nahoru Odpovědět
5.10.2019 14:15
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
ZemiakSK
Člen
Avatar
ZemiakSK:21.10.2019 8:04

Nuu , nevieme aký je návrh programu , takže ti moc nepomôžeme

Statiku sa oplatí použivať keď tvoríš nejaké funkcie pre objekt , ktorého nemáš zdrojové kódy
Dobrý príklad je trieda math , ta je staticka a nedajú sa od nej tvoriť inštancie

Inak by som statiku nepoužival .
Všetko čo sa dá urobiť zo statikou sa dá urobiť bez nej

 
Nahoru Odpovědět
21.10.2019 8:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.