![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam mały czysto teoretyczny problem.
Chodzi o wzorzec MVC. Załóżmy, że mamy OBIEKT typu Human Każdy human ma właściwości jak $name, $surname i $age i załóżmy, że OBIEKT typu human ma metodę służącą do pobrania wszystkich zapisanych ludzi zbazy danych getAllHumans() Teraz czy jeżeli bezpośrodnie w tym obiekcie odwołam się do bazy będzie to zgodne z tym wzorcem projektowym? Czy trzeba odwołać się do modelu który połączy się z bazą i to pobierze ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
@Nattfarinn - z tego co mówisz to zgodnie z MVC obiekt jako struktura/typ danych powinien być podzielony na model i co ?
czym jest ta druga część:) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
@Nattfarinn - z tego co mówisz to zgodnie z MVC obiekt jako struktura/typ danych powinien być podzielony na model i co ? czym jest ta druga część:) Nie chcę żeby to zabrzmiało jako coś oczywistego, ale obiekt powinien odpowiadać dokładnie za to, do czego go przeznaczyliśmy. Jeśli posiadasz klase Human, charakteryzującą potencjalnego człowieka - to ta klasa powinna odpowiadać tylko i wyłącznie za to. I z tego powodu metoda getAllHumans() nie powinna być częścią klasy Human. To nie tylko zasady MVC, ale generalnie zasady OOP które nieświadomie się łamie dla własnej wygody. Nie ma w tym łamaniu nic złego właściwie, bo to leży tylko w kwestii piszącego, czy chce się trzymać wzorców czy nie (IMG:style_emoticons/default/smile.gif) Mówiąc jaśniej: obiekt jako struktura/typ danych nie powinien być dzielony wcale, ale nie powinny być mu również przypisywane metody które go nie dotyczą. W podanym przez Ciebie przypadku, wygląda na to, że obiekt Human mógłby z powodzeniem być zwracany przez fabrykę (załóżmy dla przykładu: klasę Population) pełniącą funkcję modelu (lub z modelu korzystjącą). Niektóre rzeczy w programowaniu można (i bardzo to pomaga) tłumaczyć na rzeczywistych przypadkach: Człowiek [class Human] nie zna wszystkich ludzi na ziemi i to nie jego powinno się o to pytać [::getAllHumans()]. (IMG:style_emoticons/default/smile.gif) Ten post edytował Nattfarinn 2.11.2009, 13:55:06 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 13:55 |