/* * Глава 17: Принцип единственной обязанности (SOLID SRP) * * - инкапсуляция сущности с целью организации архитектуры * приложения, которую будет легко поддерживать и расширять в * течении всего промежутка эксплуатации * * Автор: Роберт Мартин (Дядя Боб) * * Принципы: * 1. Single responsibility - принцип единственной ответственности * 2. Open-closed - принцип открытости/закрытости * 3. Liskov substitution - принцип подстановки Барбары Лисков (самый сложный) * 4. Interface Segregation - принцип разделения интерфейса * 5. Dependency inversion - принцип инверсии зависисмостей */ /* * Принцип единственной ответственности (англ. single-responsibility principle, SPR) - * принцип ООП, обозначающий, что каждый объект должен иметь одну ответственность и эта * ответственность должна быть полностью инкапсулирована в класс. * Все его поведения должны быть направлены исключительно на обеспечение этой отвественности. */ /// /// К примеру: Разработать класс который будет работать с изображениями /// 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); } } /// /// EMail сервис /// Если отваливается модуль отправки Email /// мы чиним только его, нам не требуется разбирать класс Image /// 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) { } }