71 lines
3.0 KiB
C#
71 lines
3.0 KiB
C#
/*
|
||
* Глава 17: Принцип единственной обязанности (SOLID SRP)
|
||
*
|
||
* - инкапсуляция сущности с целью организации архитектуры
|
||
* приложения, которую будет легко поддерживать и расширять в
|
||
* течении всего промежутка эксплуатации
|
||
*
|
||
* Автор: Роберт Мартин (Дядя Боб)
|
||
*
|
||
* Принципы:
|
||
* 1. Single responsibility - принцип единственной ответственности
|
||
* 2. Open-closed - принцип открытости/закрытости
|
||
* 3. Liskov substitution - принцип подстановки Барбары Лисков (самый сложный)
|
||
* 4. Interface Segregation - принцип разделения интерфейса
|
||
* 5. Dependency inversion - принцип инверсии зависисмостей
|
||
*/
|
||
|
||
|
||
/*
|
||
* Принцип единственной ответственности (англ. single-responsibility principle, SPR) -
|
||
* принцип ООП, обозначающий, что каждый объект должен иметь одну ответственность и эта
|
||
* ответственность должна быть полностью инкапсулирована в класс.
|
||
* Все его поведения должны быть направлены исключительно на обеспечение этой отвественности.
|
||
*/
|
||
/// <summary>
|
||
/// К примеру: Разработать класс который будет работать с изображениями
|
||
/// </summary>
|
||
abstract class Attach
|
||
{
|
||
|
||
}
|
||
|
||
class Image : Attach
|
||
{
|
||
private int width;
|
||
private int height;
|
||
public int Width => width;
|
||
public int Height => height;
|
||
private Image(int width, int height) { }
|
||
//Добавление других методов предполагающих иной функционал не рационально
|
||
//Следуем принципу - декомпозировать - делать максимально минимальные классы под свою ответственность
|
||
public static Image CreateImage(int width, int height) { return new Image(width, height); }
|
||
}
|
||
|
||
/// <summary>
|
||
/// EMail сервис
|
||
/// Если отваливается модуль отправки Email
|
||
/// мы чиним только его, нам не требуется разбирать класс Image
|
||
/// </summary>
|
||
class EmailService
|
||
{
|
||
private string email;
|
||
private string text;
|
||
private string subject;
|
||
private Attach[] attach;
|
||
public EmailService(string email,
|
||
string text = "",
|
||
string subject = "",
|
||
params Attach[] args)
|
||
{ }
|
||
public void SendTo(string email, string text, string subject) { }
|
||
}
|
||
|
||
|
||
class Program
|
||
{
|
||
public static void Main(string[] argv)
|
||
{
|
||
|
||
}
|
||
} |