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- ի փոփոխության, ինչպես նաև հեշտացնում է մոկների ներդրումը թեստավորման համար։