четверг, 10 октября 2013 г.

Принципы объектно-ориентированного проектирования

Первые пять принципов описывают дизайн классов (SOLID)
SRP

  • На каждый объект должна быть возложена одна обязанность.
OCP
Принцип открытости/закрытости

  • Сущности должны быть открыты для расширения, но закрыты для изменения.
LSP
Принцип подстановки Барбары Лисков

  • Объекты в программе могут быть заменены их наследниками без изменения свойств программы.
ISP
Принцип разделения интерфейсов

  • Много специализированных изменений лучше, чем один универсальный.
DIP
Принцип инверсии зависимостей

  • Зависимости внутри системы строятся на основе абстракций.
  • Модули верхнего уровня не зависят от модулей нижнего уровня.
  • Абстракции не должны зависеть от деталий. Детали должны зависеть от абстракций.
Следующие 6 принципов касаются сборок (.jar или .dll)

Первые 3 принципа описывают содержание сборки.

REP
Принцип эквивалентности повторного использования и выпуска
  • Единица повторного использования равна единице выпуска.
CCP
Принцип общей закрытости
  • Все классы внутри пакета должны быть закрыты относительно изменений одного и того же вида.
  • Изменение, затрагивающее пакет, должно затрагивать все классы в этом пакете и только в нем.
CRP
Принцип совместного повторного использования


  • Все классы внутри компонента используются совместно.
  • Если вы можете повторно использовать один класс, то можете использовать и все остальные.



Следующие 3 принципа описывают связи между сборками.

ADD
Принцип ацикличности зависимостей

  • В графе зависимостей между пакетами не должно быть циклов.
SDP
Принцип устойчивых зависимостей

  • Зависимости должны быть направлены в сторону устойчивости.

SAP
Принцип устойчивых абстракций


  • Пакет должен быть столь же абстрактным, сколь и устойчивым.

Комментариев нет:

Отправить комментарий