Intern
Koja je razlika između Dependency Injection i Dependency Inversion?
sobes.tech АИ
Одговор од АИ
Ubacivanje zavisnosti (Dependency Injection, DI) i Inverzija zavisnosti (Dependency Inversion, DIP) su povezani, ali različiti koncepti u oblasti dizajna softvera.
-
Princip inverzije zavisnosti (DIP) — jedan od pet principa SOLID. On kaže da:
- Moduli višeg nivoa ne bi trebalo da zavise od modula nižeg nivoa. Oba treba da zavise od apstrakcija.
- Apstrakcije ne bi trebalo da zavise od detalja. Detalji treba da zavise od apstrakcija.
Ovaj princip je usmeren na smanjenje povezanosti i povećanje fleksibilnosti arhitekture.
-
Ubacivanje zavisnosti (DI) — je obrazac (šablon) za implementaciju inverzije zavisnosti. DI znači da se zavisnosti objekta prosleđuju spolja (npr. putem konstruktora, settera ili interfejsa), a ne kreiraju unutar objekta.
Primer DI u 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("Aplikacija je pokrenuta");
}
};
int main() {
ConsoleLogger logger;
Application app(logger); // ubacivanje zavisnosti
app.Run();
}
Ukratko: DIP je princip dizajna, a DI je način njegove implementacije.