48 lines
2.2 KiB
C#
48 lines
2.2 KiB
C#
|
/*
|
|||
|
* Глава 20: Принцип разделения интерфейсов (SOLID SRP)
|
|||
|
*
|
|||
|
* Автор: Роберт Мартин (Дядя Боб)
|
|||
|
*
|
|||
|
* Сам принцип:
|
|||
|
* - клиенты не должны зависеть от методов которые они не используют
|
|||
|
*
|
|||
|
* или
|
|||
|
*
|
|||
|
* - если какая-то сущность заявляет о своем функционале, то он должен работать
|
|||
|
*
|
|||
|
* или
|
|||
|
*
|
|||
|
* - от реализации исбыточных интерфейсов следует отказаться в пользу специфичных
|
|||
|
*
|
|||
|
* Принципы:
|
|||
|
* 1. Single responsibility - принцип единственной ответственности
|
|||
|
* 2. Open-closed - принцип открытости/закрытости
|
|||
|
* 3. Liskov substitution - принцип подстановки Барбары Лисков (самый сложный)
|
|||
|
* 4. Interface Segregation - принцип разделения интерфейса
|
|||
|
* 5. Dependency inversion - принцип инверсии зависисмостей
|
|||
|
*/
|
|||
|
public abstract class Car
|
|||
|
{
|
|||
|
public string Model { get; set; }
|
|||
|
public string Brand { get; set; }
|
|||
|
|
|||
|
public Car(string model, string name)
|
|||
|
{
|
|||
|
Model = model;
|
|||
|
Brand = name;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|||
|
//!!! вместо огромного набора функций в одном интерфейсе !!!
|
|||
|
//!!! в случае если при наследовании от него множество функций не реализуется !!!
|
|||
|
//!!! нужно перейти в сторону множественного наследования интерфейсов под каждую из функций !!!
|
|||
|
//!!! или под каждый набор функций !!!
|
|||
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|||
|
public class Program
|
|||
|
{
|
|||
|
public static void Main(string[] argv)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|