Junior — Middle
Ինչպես կարելի է ապահովել բաց/փակ սկզբունքի պահպանումը ծրագրային մոդուլներում?
sobes.tech AI
Պատասխան AI-ից
Բաց/փակ սկզբունքը (Open/Closed Principle) պահպանելու համար, մոդուլները պետք է բաց լինեն ընդլայնման համար, բայց փակ՝ փոփոխության համար: Դրանց հասնելու միջոցները:
- Աբստրակցիաների օգտագործում: Դիզայնի ինտերֆեյսներ կամ աբստրակտ դասեր սահմանել և կոնկրետ իրագործումները առանձին ստեղծել:
- Երեսպատում և պոլիմորֆիզմ: Բարելավեք վարքագիծը ենթակլասների միջոցով, առանց հիմքային դասի ծագող կոդը փոխելու:
- Կոմպոզիցիա և ներկայացում: Նոր ֆունկցիոնալություն ներդնել կոմպոնենտների միջոցով, ոչ թե փոփոխելով առկա:
- Դիզայնի նմուշներ: Օրինակ, ռազմավարություն, դեկորատոր, գործարան՝ թույլ տալով ավելացնել նոր վարքագիծ առանց առկա կոդը փոխելու:
C#-ում օգտագործելով ինտերֆեյս՝
public interface ILogger {
void Log(string message);
}
public class ConsoleLogger : ILogger {
public void Log(string message) {
Console.WriteLine(message);
}
}
public class FileLogger : ILogger {
public void Log(string message) {
// Ֆայլում գրանցում
}
}
// ILogger-ով օգտագործող դասը չի փոխվում նոր լոգգերներ ավելացնելիս
public class Processor {
private readonly ILogger _logger;
public Processor(ILogger logger) {
_logger = logger;
}
public void Process() {
_logger.Log("Սկիզբ պրոցեսինգի");
// ...
}
}
Այսպիսով, նոր ILogger տիպ ավելացնելու համար, պարզապես անհրաժեշտ է ստեղծել նոր դաս, որը իրականացնում է ILogger, առանց Processor-ին փոխելու։