![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
W swojej aplikacji (Frameworku - w nawiasie bo nie wiem czy to "coś" można nazwać frameworkiem) w klasie odpoowiedzialnej za reprezentacje wiersza z bazy danych za poocą obiektu chcę zastosować coś na kształt singletonu tylko, że przyjmującego 1 parametr $id. Jest to id wiersza w bazie danych (moja klasa wymaga klucza głównego), w zależności od tego czy dany wiersz podczas tego wywołania został już pobrany lub tylko stworzony obiekt zwraca stworzony już obiekt, w przeciwnym wypadku wywołuje prywatny konstruktor i zwraca nowy obiekt.
Czy takie coś jest poprawne? Czy jest to dobre? Czy ktoś to już stosuje? (jeżeli okaże się, że jest to dobre i poprawne, a nikt na to wcześniej nie wpadł to lecę to opatętować... (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ) Jak zrealizować dziedziczenie? W każdej klasie dziedziczącej zmieniać funkcje get instance? (Klasa po której dziedziczą jest abstrakcyjna, a dziedziczące klasy reprezentują poszczególne tabele) Jeżeli nie nadaje się to do pro proszę o przeniesienie, jeżeli już było to proszę o link i skasowanie (szukałem, ale nie znalazłem) Ten post edytował Hacker 30.10.2006, 20:47:04 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat w zależności od tego czy dany wiersz podczas tego wywołania został już pobrany lub tylko stworzony obiekt zwraca stworzony już obiekt, w przeciwnym wypadku wywołuje prywatny konstruktor i zwraca nowy obiekt. Masz do tego inne wzorce: Unit of Work, ktory zajmuje sie pamietaniem ktore rekordy byly wczytane, ktore sa zmienione i na koniec sesji (nie myslic z Sesjami) zapisuje je w bazie, usuwa itd. Do tego Identity Map ktora przechowuje juz wczytane wiersze. Przy wyciaganiu rekordu -- przez UoW sprawdza on dostepnosc rekordu w IM i gdy go nie ma to wykonuje zapytanie do bazy. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Hmmm... ciekawe, czyli coś takiego jak chcę zastosować nie jest dobre i muszę stosować trzy klasy do tego jakoś je połączyć??
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
http://www.martinfowler.com/eaaCatalog/unitOfWork.html
http://www.martinfowler.com/eaaCatalog/identityMap.html i inne wzorce http://www.martinfowler.com/eaaCatalog/, dokladnie sa opisane w jego ksiazce PoEEA zajrzyj do http://phpdoctrine.com -- wlasciwie maja to juz zrobione, po co pisac od nowa |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 0 Dołączył: 1.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat wlasciwie maja to juz zrobione, po co pisac od nowa po to aby zdobyć nowe umiejętności, stawać się lepszym, rozumieć jak to działa i jakie ma ograniczenia, a nie tylko wziąść gotowe {edit} prosił bym o dyskusje czy to poprawne i jakieś do tego za - przeciw... Ten post edytował Hacker 30.10.2006, 22:55:12 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Cytat (jeżeli okaże się, że jest to dobre i poprawne, a nikt na to wcześniej nie wpadł to lecę to opatętować... Ta opatentuj singletona ale szybko, bo ktoś to zrobi... (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 08:20 |