Sobes.tech
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-ին փոխելու։