55 lines
1.8 KiB
C#
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(""));
|
|
}
|
|
} |