Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.
Avatar
GoliathShouldWin:23.6.2015 19:21

Zdravím,
programuju hru v jave a když jsem se dostal k problému přepínání mezi jednotlivými scénami (Menu, hra, score tabule, nastavení, ...), rozhodl jsem se pro tento účel vytvořit sceneManager. Původně to byl singleton, který který přijímal 2 argumenty (hlavní stage a implementaci interface SceneProvider → jednotlivé scény). Protože se mi ale nelíbilo využívat singleton, vytvořil jsem další 2 verze. 1. poskytuje statickou metodu přímo ze třídy implementující Application (pro JavaFX) a 2. používá původní sceneManager třídu, která už ale není singleton.
No, a tady je ten problem:
Použil jsem zde princip Dependency Injection, takže každá třída, která implementuje SceneProvider teď přijímá instanci interface SceneManagerů. Jediná instance se vytvoří ve spouštející třídě a předává se dál a dál (třída MenuScene ji předá třídě GameScene, ta ji předá třídám FinishedScene a GameOverScene, etc.)
Otázka: je to ten nejlepší způsob ? Je to správné použití Dependency Injection ?

Předem děkuji za odpověď.

 
Odpovědět
23.6.2015 19:21
Avatar
Odpovídá na GoliathShouldWin
Drahomír Hanák:23.6.2015 20:52

Jednoduše si vytvoř stavový automat se stavy { Menu, Hra, Skóre, Nastavení }, urči přechody mezi stavy (třeba na základě stisknuté klávesy) a pro každý stav definuj vlastní SceneManager. Nedělal bych to zbytečně složité, protože větší abstrakci podle mě ani nepotřebuješ.

 
Nahoru Odpovědět
23.6.2015 20:52
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 2 zpráv z 2.