Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Model/Peer] Czym się kierować przy decyzji która metoda...
Forum PHP.pl > Forum > PHP > Object-oriented programming
starach
Mam dwa modele ( A i B ) przy czym model A musi skorzystać z danych modelu B żeby dokonać pewnych obliczeń. W której klasie Peer ( modelu A czy B ) powinienem ją umieścić.
Zauważyłem że w różnych modelach różnie to rozwiązuję co nie jest uwarunkowane żadnymi konkretnymi powodami. Stąd moje pytanie. Chcę wyrobić sobie do rozwiązywania takich problemów pewien schemat postępowania.
jarek_bolo
Problematyka po części związana z moim postem tutaj: model w modelu
Ja u siebie wybrałem opcję 2.

Idąc tym tropem w Twoim przypadku wszystko potrzebne do pracy Modelowi A zaimplementował bym w metodach tego modelu tudzież jego klasy Peer.
mike
Cytat(jarek_bolo @ 29.03.2009, 13:33:42 ) *
(...) wszystko potrzebne do pracy Modelowi A zaimplementował bym w metodach tego modelu (...)
No i błąd. Źle izolujesz operacje. Po to tworzy się modele, żeby to one dokonywały operacji na swoich encjach.

Jeżeli masz taka sytuacje ze w modelu A potrzebujesz danych zwracanych jako wynik pewnej operacji na danych modelu B to obliczenia powinien wykonać model B. Co się stanie jeśli tych samych obliczeń będziesz potrzebował gdzieś indziej, poza modelami? Lub w innej metodzie modelu A? Będziesz pisał prywatna metodę w modelu A do operacji na modelu B?
Nie będzie to problemem jeśli wystawisz operacje na zewnątrz z modelu B.
jarek_bolo
Nie no, zgadza się. Za bardzo skrótowo opisałem chyba.
W metodzie klasy Peer modelu A, która to coś robi i potrzebuje do tego danych z modelu B musisz odwołać się do jakiejś metody klasy Peer modelu B, która zwróci potrzebne dane.
  1. <?php
  2. //metoda klasy Peer modelu A
  3.  
  4. static function CosZrob() {
  5.  $dane_Modelu_B = PeerModel_B::daneDlaModeluA();
  6. }
  7. ?>


Tak to mniej więcej widzę. Z tym, że też nie jestem pewien czy najlepsze takie rozwiązanie, bo z poprawnym projektowaniem obiektowym dopiero raczkuję :/
starach
Czyli jeśli przykładowo konwertowałbym Jumps do HighJumps / Jumps_High to metodę za to odpowiadającą powinienem umieścić w Jumps_Peer ?
dr_bonzo
A mozesz podac REALNY przyklad/problem?

Bo generalnie jak oblcizenia robisz tylko na danych z B to B powinno je robic i zwrocic wynik.
Jak potrzebujesz tylko jedna dane z B to pobierasz ja sobie do A itp.
starach
Przykład który podałem wyżej jest zdecydowanie wystarczająco realny. Jakbym miał opisywać całą złożoność modelu danych to nie wiem czy pół kartki A4 by starczyło. Mam bardzo dużo liczb opakowanych w obiekty które tworzą kolekcje i muszę teraz z nich wyliczyć średnią arytmetyczną oraz ważoną potem porównać, podać wyniki procentowo i bla bla bla. Jako że muszę wykonać na nich jeszcze inne obliczenia cały ciąg można nazwać konwersją bo zamieniam jeden model na drugi i przedstawić mniej więcej tak <Klasa_Dużo_Dużo_Liczb> -> <Klasa_Dużo_Dużo_Średnich>.

I teraz pytanie w której klasie pośredniczącej mam tą konwersję wykonywać.
Cysiaczek
W osobnym typie zwanym konwerterem smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.