To já samozřejmě znám, ale nějak mi nejde přes pysky "servisní třídy". Rozuměl bych "servisním objektům". V programu totiž třída ztrácí smysl, je to jen pouhá šablona layoutu výsledného objektu a nějakých drobností kolem (jako tabulka vt)
Pozor, tohle rozhodně neplatí o všech jazycích. Ve slušném objektovém systému je třída také normální entita (objekt).
O důvod víc, proč tomu říkat raději "servisní objekt" nebo ve větším měřítku "servisní vrstva".
Svata prostoto. To, ze sa Magda nevie vyjadrovat jednoznacne a neupresnila programovaci jazyk, nechame bokom, ale ak Magda v oboch svojich prispevkoch spomenula podstatne meno zenskeho rodu trieda, myslite si, ze hovorila o implementacii sluzieb (v najsirsom slova zmysle) v:
a) prototypovom jazyku
b) pure funkcionalnom jazyku
c) class based jazyku (cough, cough, trieda) <--------------------- SPRAVNA ODPOVEDtm
A teraz mi prosim vysvetlite, ako inak sa da v class based jazyku vytvorit "servisny objekt" bez tej "servisnej triedy", ktora je "jen pouhá šablona" s jeho implementaciou?
...makes you wonder.
S termínem servisní třída mám problém, protože ho neznám. Pokud jde o nějakou knihovnu bezstavových operací, tak spíš než třídu používám normální namespace. Chápu tedy, že v jazycích, které nemají namespace musím toto zabalit do třídy. Tomu bych rozuměl.
To co já nazývám servisními objekty, nebo často servisními interfacemi jsou objekty/interface, které obsahují hromadu metod, které spolu moc nemusí souviset, některé jsou stavové, jiné bezstavová, často jsou tam továrny. Zahrnutí do interface má ten význam, že skrývám implementaci, buď proto, že nechci aby byla vidět, nebo většinou proto, že v tom místě není definována (je dodána později). To třeba umožňuje nahradit skutečnou implementaci mockupem.
Servisní objekt skrze interface se buď předává do funkčních objektů přes konstruktor, někdy je dodáván později, někdy se dá za běhu změnit, záleží na typu objektu. Někdy jej mám globální nebo thread lokální, pokud jde o něco hodně základního. Třeba logovací service je zpravidla thread lokální, abych služby logování měl k dispozici všude a abych si nemusel logovací objekt předávat mezi objekty do zblbnutí.
Thread lokální objekty nadále neztrácí možnost funkcionalitu dočasně změnit, třeba v rámci následujícího volání mohu chtít změnit logovacího objektu, a po návratu z vrátím stav služby do původního stavu.