Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Kiedy korzystać z singletona?
Beynar
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


Ostatnio opanowałem ten wzorzec i napisałem w nim jedną klasę obslugi bazy danych. Bardzo podoba mi się idea singletona i chyba można by ją stosować dużo częsciej ale kiedy tak naprawde wg was singletona powinno się używać a kiedy nie? Największą zaletą jest napewno oszczędność zasobów ale jakie są wady? (napewno jakieś muszą być).

PS. W tej chwili pisze mapper czy modelator (zwał, jak zwał...) klase ktora w całym projekcie będzie mi sprawdzała poprawność napływających z zewnątrz danych. Napewno w konstruktorze będzie zładowanie mapy z pliku - przeczytanie całego pliku - mapy wszystkich zmiennych może zająć troche czasu. Gdybym zrelizował ta klase jako singleton wczytywałbym mape tylko raz....

Ten post edytował Beynar 22.12.2007, 19:05:43
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Singleton ma inne zadanie niż Ty mu wyznaczasz. Chodzi tu o dostęp do danych w każdym miejscu systemu. To, że nie będzie Ci wczytywało map da się też osiagnąć bez singletota i to z powodzeniem. Z singletonem musisz uważać, bo to jest ciągle dana globalna, choć ładniejsza i zgrabniejsza. Ja sam mimo, że używam singletona, to i tak tam, gdzie mogę, to przekazuję jego obiekt do innych obiektów. Pod pojęciem musisz uważać mam na myśli spójność projektu.

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.
Go to the top of the page
+Quote Post
Beynar
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


No tak.... zapomniałem. Przeciesz w singletonie glownie chodzi o globalny dostep do jednej instancji.
Zatem wniosek, ze nalezaloby z niego korzystac kiedy chcemy miec jakis obiekt globalny z ktorego bedziemy korzystac w calym projekcie?
Taki jakby obiekt publiczny - globalny.

Czy sa jakies zagrozenia zwiazne z korzystaniem z singletona?

Mi sie wydaje ze mam conajmniej jedno:
kiedy programista korzysta z obiektu singletona i dalje w kodzie wywola jakas funkcje czy inny obiekt ktory w srodku korzysta z tegoż wczesniej uzwyanego singletona to zostanie on w sordku np. nadpisany innymi danymi. Programista pisze dalej w glownym skrypcie, po wywolaniu jakies metody mysli ze jego obiekt ma wczesniejsze wlasciwosci, z kilku linijek wyzej... jednak linijke wyzej wywolal obiekt ktory zmienil stan singletona.
Wtedy mamy zamieszanie....

Ten post edytował Beynar 24.12.2007, 10:46:15
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




...Jak zawsze, kiedy używamy danych globalnych. Przejrzyj forum - na tema singletona napisano wiele postów.

Pozdarwiam.


--------------------
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.
Go to the top of the page
+Quote Post
bigZbig
post
Post #5





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie wiem co ten Twój mapper ma dokładnie robić ale jeśli ma odbierać dane dostarczane z zewnątrz to zwykle taka klasa nazywana jest Requestem, a wzorzec singleton świetnie się nadaje do jego implementacji.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
Beynar
post
Post #6





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


Moj mapper bedzie dzialal tak

Zewnetrzna mapa zmiennych bedzie w tym formacie:
Kod
string,FIRST_NAME,Imie,2,30,NOT NULL,
string,LAST_NAME,Nazwisko,2,20,NOT NULL,[a-zA-Z'`]
string,EMAIL,Email,4,50,NOT NULL,[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$


Dane naplywajace np. z formow beda podlegaly walidacji i tym wlasnie zajmowac sie bedzie mapper - odczytywaniem mapy i przeksztalcaniem jej do formatu w ktorym moge sprawdzic dana z wyznaczonym modelem danych.
Formularzy bedzie wiele i w roznych miejscach. Wszedzie trzeba bedzie je walidowac - przepuscic przez mapper/modelator i sprawdzic poprawnosc
Wiec singleton chyba bedzie sie nadawal...?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 10:03