Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> DI vs Inheritance jeśli idzie o dostęp do danych
trzczy
post 4.05.2016, 13:02:52
Post #1





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Kiedy fabryka produkuje sporo obiektów i każdy obiekt musi mieć dostęp do danych, które fabryka posiada, to lepiej Inheritance czy DI?

Załóżmy, że jest klasa fabryki o nazwie Test. I ta fabryka może produkować obiekty o klasie dziedziczącej(1.), albo o klasie pierwotnej z DI(2.):

1.
Kod
class PukProduct extends Factory{
    function __toString() {
        return $this->puk . "<br>\n";
    }
}


2.
Kod
class PinProduct {
    private $pin;

    function __construct($pin)     {
        $this->pin = $pin;
    }

    function __toString() {
        return $this->pin . "<br>\n";
    }
}


Ostatnio coś rozkminiałem i stanąłem przed tym dylematem. W przypadku dziedziczenia (1.) każdy wyprodukowany obiekt powstaje z klasy poszerzonej o klasę źródłową. Jeżeli ta klasa źródłowa jest, załóżmy, wielka to czy taki wyprodukowany obiekt jest tym samym większy od takiego, który powstaje na bazie klasy niedziedziczącej (2.)?

Jeśli jest przez to wielki i występuje wielokrotnie to chyba zajmuje pamięć? Jeśli tak, to nie lepiej stosować samo DI bez dziedziczenia(2.)?
Z góry dziękuję

edit: Poprawiłem tytuł, dostęp "do danych", a nie "di danych"

Ten post edytował trzczy 4.05.2016, 14:50:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trzczy
post 4.05.2016, 14:53:40
Post #2





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Pytanie w temacie nie jest w kwestii ogólnej, lecz odnosi się do konkretnego przykładu podanego w poście. Chodzi o produkcję takich obiektów, które mają dostęp do danych, danych które posiada produkująca je fabryka. Czy dostęp do tych danych uzyskać przez inheritance, czy przez DI.

Niemniej, mimo pewnej niejasności mego zapytania, za co przepraszam, twoja odpowiedź będzie dla mnie cenną wskazówką.

Architektura jest taka, że w aplikacji MVC klasa View produkuje obiekt klasy Template. Obiekt Template produkuje obiekt klasy CodeParser, który analizuje html-ową templatkę pod kątem miejsc, gdzie trzeba wstawić jakiś powtarzalny fragment kodu lub fragment kodu wygenerowany na podstawie danych z bazy danych.

Dla każdego z tych miejs tworzy obiekt właściwej klasy, np. klasy Footer, Navigation albo Articles itp.

Czyli na końcu łańcuszka może się pojawić taki obiekt Articles, który posiada dane z bazy danych.

Zgodnie z architekturą MVC te dane są dostępne w klasie View. I teraz, czy taki obiekt Articles ma pobierać dane z View przez Inheritance czy przez DI?


edit: literówki i więcej jednoznaczności

Ten post edytował trzczy 4.05.2016, 15:06:32
Go to the top of the page
+Quote Post

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 19:07