Sobes.tech
Junior — Middle

Կարող եք բացատրել կախվածությունների հակադարձման սկզբունքը և դրա կարևորությունը ծրագրային համակարգերի նախագծման մեջ?

sobes.tech AI

Պատասխան AI-ից

Ավելի բարձր մակարդակի մոդուլները չպետք է կախված լինեն ցածր մակարդակի մոդուլներից: Երկուսն էլ պետք է կախված լինեն ապակառուցվածքներից:

  • Ապակառուցվածքները չպետք է կախված լինեն մանրամասներից: Մանրամասները պետք է կախված լինեն ապակառուցվածքներից:

Սա նշանակում է, որ փոխարենը, որ դասը ուղղակիորեն ստեղծի կամ օգտագործի կոնկրետ կախվածությունների իրագործումները, նա պետք է աշխատի միջերեսների կամ ապակառուցված դասերի միջոցով: Սա մեծացնում է կոդի ճկունությունը և թեստավորման հնարավորությունը:

C# օրինակ:

// Ապակառուցվածք
public interface IMessageSender
{
    void Send(string message);
}

// Կոնկրետ իրագործում
public class EmailSender : IMessageSender
{
    public void Send(string message) {
        Console.WriteLine($"Էլփոստ ուղարկում է: {message}");
    }
}

// Դաս, որը կախված է ապակառուցվածքից
public class NotificationService
{
    private readonly IMessageSender _messageSender;

    public NotificationService(IMessageSender messageSender) {
        _messageSender = messageSender;
    }

    public void Notify(string message) {
        _messageSender.Send(message);
    }
}

// Օգտագործում
var emailSender = new EmailSender();
var notification = new NotificationService(emailSender);
notification.Notify("Բարև!");

Այս մոտեցումը թույլ է տալիս հեշտությամբ փոխել հաղորդագրության ուղարկման իրականացմանը առանց NotificationService- ի փոփոխության, ինչպես նաև հեշտացնում է մոկների ներդրումը թեստավորման համար։