PatternsCSharpProgramming/Patterns/2_Принцип открытости, закрытости/Program.cs
Dvurechensky 3a28caed27 1.0
Main
2024-10-05 09:15:54 +03:00

55 lines
1.8 KiB
C#

/*
* Глава 18: Принцип открытости/закрытости (SOLID SRP)
*
* Автор: Роберт Мартин (Дядя Боб)
*
* Постулаты:
* - если какая-то сущность описана, то она уже
* полностью закрыта для каких либо изменений;
* - сущность открыта для модификаций;
*
* Принципы:
* 1. Single responsibility - принцип единственной ответственности
* 2. Open-closed - принцип открытости/закрытости
* 3. Liskov substitution - принцип подстановки Барбары Лисков (самый сложный)
* 4. Interface Segregation - принцип разделения интерфейса
* 5. Dependency inversion - принцип инверсии зависисмостей
*/
public abstract class Attach
{
}
public class Image : Attach
{
private int width;
private int height;
public int Width => width;
public int Height => height;
private Image(int width, int height) { }
private Image(int width, int height, ISave save) { }
public static Image CreateImage(int width, int height) { return new Image(width, height); }
public static Image CreateImage(int width, int height, ISave save) { return new Image(width, height, save); }
public void SaveToFile(string path) { }
}
public interface ISave
{
ISave SaveTo(string path);
}
public class SaveToBmp : ISave
{
public ISave SaveTo(string path)
{
return this;
}
}
public class Program
{
public static void Main(string[] argv)
{
Image.CreateImage(100, 100, new SaveToBmp().SaveTo(""));
}
}