Rejestr vs Singleton vs global, co jest lepsze |
Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Rejestr vs Singleton vs global, co jest lepsze |
23.08.2007, 15:19:58
Post
#21
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) |
zaczęło mnie ostatnio dręczyć jedno pytanie,
jaka jest przewaga (anty)wzorca (zależy od punktu siedzenia) Singleton od klasy z atrybutami i metodami statycznymi, że używany jest Singleton efekty można uzyskać w sumie podobne |
|
|
27.08.2007, 18:49:06
Post
#22
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) |
A wiesz jaka jest roznica pomiedzy metodami statycznymi a dynamicznymi ? Toc to podstawy programowania obiektowego a Ty z czyms takim na Pro wyjezdzasz
-------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
28.08.2007, 09:04:16
Post
#23
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) |
Myślę, że zimiemu chodziło o Paamayim Nekudotayim - ja dołączam się do jego rozterek:
Aktualnie pracuję w kodzie, w którym używanych jest kilkanaście singletonów i za każdym razem, gdy chcę użyć choć jednej metody z jakiejś klasy, muszę najpierw załadować sobie obiekt: Kod $this -> objJakisObiekt = JakasWspanialaKlasa :: getInstance(); a potem używać tego obiektu:Kod $this -> objJakisObiekt -> getCostam(); W skrócie: mnóstwo niepotrzebnego pisania! Moim zdaniem singleton to marnotrawstwo czasu i kodu. Może kiedyś singleton był jazzy, ale nie widzę przeszkód, by używać powyższej postaci. Czy ktoś mógłby mnie naprostować? -------------------- misiu | chór
"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku" Allen Holub |
|
|
28.08.2007, 10:11:37
Post
#24
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
@msulik - to zależy, co kto woli. Nic jednak nie stoi na przeszkodzie, aby singleton podpiąć pod składową - wtedy masz dalej singleton, a np. w jakiejś klasie bazowej ładujesz go do zmiennej i pochodne używają sobie $this->singleton->costam. Grunt, że bazowa może go sobie pozyskać, a My nieco jeszcze odtłuszczamy singletona i zyskujemy w ten sposób elastyczność kodu.
Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
28.08.2007, 21:22:54
Post
#25
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) |
@NuLL: ogólnie pojęcie "dynamiczne metody" nie jest chyba powszechnie przyjętym albo je przeoczyłem, ale nieważne, tak znam tą różnicę ale chyba nie do końca mnie zrozumiałeś...
@msulik Cytat Myślę, że zimiemu chodziło o Paamayim Nekudotayim tego zdania nie bardzo rozumiem, z tego co mi wiadomo to "Paamayim Nekudotayim" jest jedynie śmieszną nazwą dla tego podwójnego dwukropka którego się używa przed metodami statycznymi (i nie tylko), ale może się mylę no ja myślałem nawet bez konstruktorów i desktruktorów bo miałem chwilowo jeszcze mniejsze potrzeby, ale na przykład zastosowanie kodu podobnej konstrukcji jak ten @msulika zamiast jakiegoś Singletona do obsługi bazy danych wydaję mi się bardzo dobrym pomysłem swoją drogą jest dla mnie niezrozumiałe stworzenie operatora :: przez twórców PHP do metod statycznych, w Javie do jednego i drugiego używa się kropki i wszystko jest w porządku... wg mnie :: jedynie utrudnia :/ no ale to taki OT @Cysiaczek: Cytat a My nieco jeszcze odtłuszczamy singletona i zyskujemy w ten sposób elastyczność kodu. mógłbyś rozwinąć? nie bardzo rozumiem... na czym miałaby polegać ta elastyczność? czyli nikt nie widzi przeciwwskazań dla takich "statycznych klas", zastanawia mnie tylko po co wymyślali Singleton skoro taka klasa statyczna wydaję się prostsza... Ten post edytował zimi 29.08.2007, 15:21:55 |
|
|
28.08.2007, 21:42:12
Post
#26
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.01.2006 Skąd: Wodzisław Śl. Ostrzeżenie: (0%) |
swoją drogą jest dla mnie niezrozumiałe stworzenie operatora :: przez twórców PHP do metod statycznych, w Javie do jednego i drugiego używa się -> i wszystko jest w porządku... wg mnie :: jedynie utrudnia :/ no ale to taki OT w cpp jest ., -> i ::, i nikt nie narzeka ;p -------------------- malcom.pl | xime.xorg.pl | http://wxwidgets.org.pl | software developer c/c++ php perl asm
|
|
|
28.08.2007, 22:13:48
Post
#27
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 18 Dołączył: 6.03.2006 Skąd: Szczecin Ostrzeżenie: (0%) |
@zimi: w Javie nie ma zadnych przedrostkow przed zmiennymi typu $ zeby odroznic, czy dany identyfikator jest nazwa klasy czy zmiennej, po prostu dana nazwa musi byc unikalna i na podstawie tego do czego sie odnosci wykonuje sie kod. w PHP musi byc wyraznie powiedziane, czy odwolujesz sie do klasy, czy do obiektu.
co do samych metod statycznych - glowna przeszkoda bylo to, ze we wczesnych wersjach PHP 5 wywolania statyczne byly znacznie wolniejsze od dynamicznych przez co o wiele lepiej bylo nawet za kazdym razem pobierac singleton i wykonywac operacje na instancji, a nie statycznymi metodami klasy. @MalCom: ale w C++ (i C, bo tam tez sa skladowe struktur) sytuacja jest diametralnie inna >.<. tam zarowno oepratory . jak i -> odnosza sie do dynamicznych skladowych, tylko zaleznie od tego czy istancji, czy wskaznika. -------------------- Wrzasq.pl
Tworzenie stron i aplikacji internetowych. Chillout Development - tworzenie stron i aplikacji internetowych. |
|
|
28.08.2007, 22:24:11
Post
#28
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.01.2006 Skąd: Wodzisław Śl. Ostrzeżenie: (0%) |
@wrzasq: Ale jakby nie patrzec sa az 3 operatory dla obiektow, w tym osobny dla statycznych i nikt nie narzeka na to
Ja sie boje tego, aby php zbytnio nie upodabnialo sie do javy ;p -------------------- malcom.pl | xime.xorg.pl | http://wxwidgets.org.pl | software developer c/c++ php perl asm
|
|
|
28.08.2007, 22:33:59
Post
#29
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) |
Cytat w PHP musi byc wyraznie powiedziane, czy odwolujesz sie do klasy, czy do obiektu no i przedrostek $ o którym wspomniałeś Ci nie wystarczy? odwołujesz się do klasy masz T_STRING, do obiektu masz T_VARIABLE a za nim mogłoby być -> no i spoko ja nie widzę problemu Cytat glowna przeszkoda bylo to, ze we wczesnych wersjach PHP 5 wywolania statyczne byly znacznie wolniejsze od dynamicznych no to już ma jakiś sens, niemniej Singleton również propagowany jest w innych językach programowania np. we wspomnianej przeze mniej Javie gdzie podobno wywoływanie metod statycznych jest krótszym procesem... |
|
|
29.08.2007, 06:45:12
Post
#30
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. |
Cytat mógłbyś rozwinąć? nie bardzo rozumiem... na czym miałaby polegać ta elastyczność? Jeżeli sam singleton to taka dana globalna, to wypada, aby programista zminimalizował ilość odwołań poprzez getInstance().Jeśli wyprowadzasz 5 klas z jednej bazowej i wiesz, że każda wykorzysta w którymś momencie obiekt singletona, to w klasie bazowej przypisujesz go do składowej, co może (choć nie musi) wpływać pozytywnie na hermetyzację zestawu klas.Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
29.08.2007, 12:48:40
Post
#31
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) |
@msulik No to "Scope Resolution Operator", jak wolisz Ale dokładnie o to mi chodziło Nie byłoby tej dyskusji, gdyby twórcy PHP od początku zaprojektowali ten język jako obiektowy i użyli kropki jako separatora, a nie jako konkatenacji.z tego co mi wiadomo to "Paamayim Nekudotayim" jest jedynie śmieszną nazwą dla tego podwójnego dwukropka którego się używa przed metodami Czy ktoś może wie, jak się nazywa konstrukcja przedstawiona przeze mnie powyżej? Bo to jest taka hybryda: niby singleton, ale nie do końca, bo nie pobieramy instancji; niby klasa tylko z metodami statycznymi, ale nie do końca, bo posiada instancję. -------------------- misiu | chór
"Zdeterminowany programista potrafi stworzyć fatalny kod w każdym języku" Allen Holub |
|
|
4.09.2007, 14:07:53
Post
#32
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) |
Cytat ... Czy ktoś może wie, jak się nazywa konstrukcja przedstawiona przeze mnie powyżej? Bo to jest taka hybryda: niby singleton, ale nie do końca, bo nie pobieramy instancji; niby klasa tylko z metodami statycznymi, ale nie do końca, bo posiada instancję. Gdyby nie ta instancja to wyglada jak zbiur funkcji w "panierce obiektowej". Z tym nie wiele da sie zrobic, bo dostepu do instancji nie ma wiec ciezko to gdzies zapisac, serializowac, czy zrobic klona. Wiec raczej okreslil bym to tworem mało określonym albo nie wiem Mało sprytnym(bez urazy, ale mowie o tej klasie co napisales wczesniej) ? Cos takiego mozna wykozystac jako magazyn, ale i tak jest wtedy zbedna instacja. -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
5.09.2007, 20:44:42
Post
#33
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%) |
Cytat Cos takiego mozna wykozystac jako magazyn, ale i tak jest wtedy zbedna instacja. po to jest destruktor żeby sam po sobie sprzątał to jest wg mnie jedyny cel egzystencji tej instancji, ale nie można powiedzieć że jest ona bezcelowa |
|
|
Wersja Lo-Fi | Aktualny czas: 22.09.2024 - 20:56 |