Intern
Jaka jest różnica między Dependency Injection a Dependency Inversion?
sobes.tech AI
Odpowiedź od AI
Wstrzykiwanie zależności (Dependency Injection, DI) i odwrócenie zależności (Dependency Inversion, DIP) to powiązane, ale różne koncepcje w dziedzinie projektowania oprogramowania.
-
Zasada odwrócenia zależności (DIP) — jedna z pięciu zasad SOLID. Mówi, że:
- Moduły wysokiego poziomu nie powinny zależeć od modułów niskiego poziomu. Oba powinny zależeć od abstrakcji.
- Abstrakcje nie powinny zależeć od szczegółów. Szczegóły powinny zależeć od abstrakcji.
Zasada ta ma na celu zmniejszenie powiązań i zwiększenie elastyczności architektury.
-
Wstrzykiwanie zależności (DI) — to wzorzec (metoda) realizacji odwrócenia zależności. DI oznacza, że zależności obiektu są mu przekazywane z zewnątrz (np. przez konstruktor, setter lub interfejs), a nie tworzone wewnątrz obiektu.
Przykład DI w C++:
class ILogger {
public:
virtual void Log(const std::string& message) = 0;
};
class ConsoleLogger : public ILogger {
public:
void Log(const std::string& message) override {
std::cout << message << std::endl;
}
};
class Application {
ILogger& logger;
public:
Application(ILogger& logger) : logger(logger) {}
void Run() {
logger.Log("Uruchomiono aplikację");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // wstrzykiwanie zależności
app.Run();
}
Podsumowując: DIP to zasada projektowania, a DI to sposób jej realizacji.