Sobes.tech
Junior — Middle

Qanday qilib bog'liqliklarning teskari aylantirilishi kodni sinov qilish jarayonini osonlashtiradi?

sobes.tech AI

AIdan javob

Dependency Inversion Principle (DIP) allows high-level modules to be independent of low-level modules by depending on abstractions. This makes testing easier, as mocks or stubs can replace real dependencies without changing the code under test.

Example in C#:

public interface ILogger
{
    void Log(string message);
}

public class FileLogger : ILogger
{
    public void Log(string message) { /* write to file */ }
}

public class UserService
{
    private readonly ILogger _logger;
    public UserService(ILogger logger)
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // user creation logic
        _logger.Log($"User {name} created");
    }
}

// In tests, you can pass a mock ILogger:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

This way, tests are not dependent on real implementations and can verify logic in isolation.