Я разрабатываю библиотеку контролов. Есть несколько моделей поведения контролов. Каждая из моделей определяет несколько свойств, например, текущее состояние. Также определяются переходы между состояниями, реакция на нажатия пользователя, вывод всплывающих подсказок и т.п. С другой стороны, внешне контролы могут выглядеть по-разному. Если по тупому, то может потребоваться реализовать одинаковые модели поведения в каждом контроле. Хотелось бы отдельно сделать контролы, задающие поведение, а обычные (требуемые) контролы от них как-нибудь пронаследовать. Если сравнить их, то ни практически одинаковые: обрабатывают сообщения (например, один WM_PAINT, другой WM_LBUTTONDOWN), имеют свойства и методы. Сдается мне, что надо в контролах библиотеки аггрегировать поведенческие контролы. Однако как через аггрегацию пройдут обработчики сообщений? Если сделать делегирование, то можно написать шаблоны, которые будут добавлять всю реализацию поведенческих контролов в мои контролы. Есть еще идеи?