Хоть и не ко мне напрямую вопрос, но позвольте от себя ответить.

Я пользуюсь абстрактными типами. Сейчас в приложении, которое я делаю, порядка 30 модулей, в одном из них я определяю абстрактный тип (с типовыми процедурами), в другом - пользуюсь этим абстрактным типом и процедурами, в третьем и четвертом - расширяю и реализую процедуры.
Условно можно так сказать: абстрактный тип Фигура в первом модуле; тип Холст, на который помещается Фигура - во втором, и конкретные разновидности Фигур в третьем и четвертом.

А вот пример, когда в одном модуле - и абстрактный тип, и конкретные расширения.
Во входном тексте определяется перечень модулей и прочих артефактов, входящих в Коробку. С Коробками предусмотрен ряд действий, каждое из которых по-своему параметризуется.
Синтаксический анализатор разбирает входной текст-определение Коробки, преобразует его во внутриязыковое структурное представление. И затем передает его Действию. Действие - это абстрактный тип; на этом абстрактном уровне определено взаимодействие Анализатора и Действия. Тип Действие расширяется для каждого действия, которое предусмотрено, и сейчас их три или четыре.