Avatar
GoliathShouldWin:

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
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na GoliathShouldWin
Drahomír Hanák:

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.