Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názor ke zprávičce PHP: Je rychlejší singleton nebo statická třída?

Vít Šesták aura:72
3. 3. 2010 11:08

Re: Jiná kritéria

celé vlákno

Samozřejmě, vše záleží na správné interpretaci. Konkrétně o HPHP nejde, jde mi spíš obecně o přístup „Zítra nasadíme toto a výkon může být jinde.“.

Určité odůvodnění mohou mít jak „statické třídy“*, Singleton, tak i Dependency Injection.
  • Statické metody mají podobný význam jako fuknce.
  • Singleton použiju typicky tehdy, když chci implementovat nějaké rozhraní a všechny instance by byly stejné, například http://gist.github.com/319827 . Nepovažuji to jako vhodné řešení například pro databázové připojení. Považuji jej obvykle za vhodnější řešení než statické metody. Například v Javě si také mysleli, že třídě Math budou nejlépe slušet statické metody. Pak se tu objevila třída StrictMath. Budu chtít udělat třídu, která umí pracovat jak s Math, tak StrictMath. Co s tím? Kdyby to byly Singletony se společným abstraktním předkem (nejlépe s package-private konstruktorem), problém by byl snadno vyřešen.
  • Dependency Injection je vhodná pro předávání instancí napříč objektovým modelem a kam až vím to nenahradí jakýkoli jiný návrhový vzor. Používat zde Singleton apod. je něco jako používat globální proměnnou.

*) Tento pojem trošku koliduje se stejným pojmem v Javě, ale, myslím, víme, o čem mluvíme.