Sobes.tech
Junior — Middle

თქვენ გამოიყენეთ სერვისის Locator-ის ნიმუში თქვენს პროექტებში სერვისებზე კონტროლირებადი წვდომისთვის?

sobes.tech AI

პასუხი AI-სგან

დიახ, მე ჩემს პროექტებში გამოვიყენე სერვისის ლოკატორის ნიმუში ცენტრალიზებული წვდომისთვის სერვისებზე და კომპონენტებზე.

სერვისის ლოკატორი არის ობიექტი, რომელიც იცის, როგორ მიიღოს საჭირო სერვისი (მაგალითად, DI კონტეინერის ან ფაბრიკის საშუალებით) და უზრუნველყოფს მას მომხმარებლებს მოთხოვნის მიხედვით. ეს გამარტივებს დამოკიდებულებების მართვას, განსაკუთრებით დიდ პროექტებში.

C#-ის მაგალითი:

public interface IService {}
public class MyService : IService {}

public class ServiceLocator
{
    private static readonly Dictionary<Type, object> services = new Dictionary<Type, object>();

    public static void Register<T>(T service) where T : class
    {
        services[typeof(T)] = service;
    }

    public static T Get<T>() where T : class
    {
        services.TryGetValue(typeof(T), out var service);
        return service as T;
    }
}

// გამოყენება
ServiceLocator.Register<IService>(new MyService());
var service = ServiceLocator.Get<IService>();

თუმცა, უნდა გვახსოვდეს, რომ სერვისის ლოკატორი შეიძლება დამალოს დამოკიდებულებები და გამარტივოს ტესტირება, ამიტომ თანამედროვე პროექტებში ხშირად უპირატესობას ანიჭებენ გამჭვირვალე დამოკიდებულებების ინექციას (Dependency Injection).