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

Независимость клиента


Абстрагирование и факторизация могут во многих случаях выполняться без негативных последствий для существующих клиентов (приложение принципа Открыт-Закрыт). Это свойство является результатом использования скрытия информации. Рассмотрим снова предшествующие схематические случаи, но с типичным клиентским классом X, показанным на рисунке:


Рис. 6.19.  Абстракция, факторизация и клиенты

Когда B абстрагируется в A, или компоненты E факторизуются с компонентами F в D, класс X, представляющий клиента B или E (на рисунке он клиент обоих классов) в большинстве случаев не заметит никаких изменений. Включение класса в схему наследования не оказывает влияния на его клиентов, если они применяют компоненты класса на сущностях соответствующего типа. Другими словами, если X использует B и E как поставщиков по схеме:

b1: B; e1: E ... b1.some_feature_of_B ... e1.some_feature_of_E

то X не заметит, что B или E обрели родителей в результате абстрагирования или факторизации.



Содержание раздела