Portál AbcLinuxu, 11. května 2025 04:31
Řešení dotazu:
Asi nejčastěji narazíš na Singleton, což je jen objektový obal na globální proměnnou (= zlo, vyhni se tomu).To je zase kec. Singleton je objektový obal na věc, která je globální a unikátní, i kdybys nechtěl. Například program sám: můžeš se stavět na hlavu, ale program bude mít jeden pid, jeden argv, etc.
... která je globální a unikátní ...Jo ... globální proměnná. Prostě jen jiný název pro totéž. Sám to píšeš
class Application { Application(argv) { // nějaká ta inicializace, zpracování parametrů } int execute() { // tady je aplikace (mimo konstruktor, aby bylo // možné nastavit další parametry) } }
// Zavaděč aplikace int main (argv) { Application a = new Application(argv); return a.execute(); }Jak vidíš, není tam žádný singleton. Funkce ::main() by ho mohla trošku připomínat, ale je to jen jednoduchý zavaděč, aby jádro mohlo někde začít se spuštěním. Třída Application také není singleton, neboť není nijak zaručeno, že nemůže existovat více než jedna instance, ani není jak takovou instanci získat. Application asi není příliš vhodný název, možná by se hodilo spíš něco jako MainWindow, ale to záleží na tom, k čemu Application je. Také nám nic nebrání spustit více instancí, třeba otevřít více dokumentů najednou nebo provést paralelně několik výpočtů:
int main(arg) { ThreadPool tp; foreach (i in arg) { Application a = new Application(arg[i]); tp.executeInNewThread(a); // tp zavolá a.execute() } return tp.waitForAllThreads(); }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.