2024-10-05 09:15:54 +03:00
|
|
|
|
/*
|
2025-05-12 03:32:04 +03:00
|
|
|
|
* Author: Nikolay Dvurechensky
|
|
|
|
|
* Site: https://www.dvurechensky.pro/
|
|
|
|
|
* Gmail: dvurechenskysoft@gmail.com
|
|
|
|
|
* Last Updated: 12 мая 2025 03:31:02
|
|
|
|
|
* Version: 1.0.7
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
2024-10-05 09:15:54 +03:00
|
|
|
|
* Глава 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)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|