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


Разнообразие абстракции


Этот принцип атавизма - один из наиболее удивительных из всех атрибутов наследования. Чарльз Дарвин

Две формы апостериорного конструирования родителя являются общими и полезными.

Абстрагирование представляет позднее обнаружение концепции высшего уровня. Вы находите класс B, покрывающий полезное понятие, но чей разработчик не обнаружил, что это фактически специальный случай общего понятия A, для которого оправдана наследственная связь:


Рис. 6.17.  Абстракция

То, что это понимание не пришло сразу, другими словами, то, что B был построен без учета A, - не является причиной отказа от наследования в этом случае. Сразу же при обнаружении необходимости A вы можете, а в большинстве случаев должны написать этот класс и адаптировать B как его наследника. Это не столь хорошо, как написать раньше A, но лучше, чем не написать вовсе.

Факторизация возникает в случае обнаружения того, что два класса E и F фактически представляют варианты одного и того же понятия:


Рис. 6.18.  Факторизация

Если вы с запозданием обнаружили эту общность, то шаг обобщения позволит добавить общий родительский класс D. Здесь снова предпочтительнее построить иерархию сразу же, но лучше позже, чем никогда.



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