Googlujac znalazlem kilka argumentow, jeden z nich to to, ze obiekt Singletonu jest globalnie dostepny co lamie jakies tam zasady OOP, ale czym to sie rozni od tego, ze definicja klasy tez jest przeciez globalnie dostepna (zmienia sie jedynie moment w ktorym uzyskujemy obiekt), przez co mozemy zrobic:
//gdzies tam mamy klase powiedzmy Database ktora mniej wiecej wiadomo do czego moze nam sluzyc
JakasKlasa::metoda()
{
Database * db;
//db = new Database;
//db = Database::getSingleton();
//cos tam robimy z db
}
bez wzgledu na to czy Database jest Singletonem czy nie to i tak mamy do niej dostep.
Gdzies na jakims blogu przeczytalem, ze trudniej sie testuje klase ktora odwoluje sie do Singletonu z powodu takiego, ze klasy nie mozna se wydziabac do nowego projektu bo "potrzebny jest tez ten Singleton", a czy jak bede przekazywal taki obiekt np w parametrach to definicja klasy nie bedzie mi potrzebna?
Paradoksalnie jedynym sensownym argumentem jaki gdzies tam znalazlem to takie prymitywne zdanie: "korzystajac z Singletonu obiekt bierze sie z powietrza", no i rzeczywiscie, cos w tym jest, wydaje mi sie, ze "dobry" projekt OOP mozna przedstawic w postaci drzewa (czy tam UMLa - niestety nie znam sie), to dziedziczy po tym, to zawiera w polu to i tamto a tu nagle odwolanie do jakiegos obiektu nie wiadomo skad. Ale jak sie zastanowic to kazda klasa ktorej obiekt robimy sobie np w jakiejs funkcji (np std::string) tez sie bierze z nikad.
Od razu prosze o nienaskakiwanie na mnie za cienka argumentacje bo na razie jestem neutralny i temat zalozylem po to zeby wysluchac argumentacji niezaleznych osob po czym mam nadzieje wyrobie sobie jakies zdanie na ten temat.
Ah, no i tak wiem, ze istnieja w sieci rozne publikacje na ten temat ale mi zalezy na dyskusji (czyli na wymianie i ew obalaniu przez innych argumentow) wsrod osob ktore jakos tam znam (czyli Was).