Мне нужно разработать небольшую рамку, которая будет использоваться несколькими нашими приложениями. Кроме того, фреймворк будет использоваться несколько раз в одном приложении, но с немного другой конфигурацией. «Природа» конфигурации более сложна, чем просто наличие некоторых параметров конфигурации и некоторых настроек. На практике приложение должно предоставлять свои собственные структуры данных, которые будут включены в структуру, что делает его еще более сложным.
Я вижу следующие 4 варианта написания фреймворка:
- Поместите общую логику в базовый класс и сообщите приложению, что оно должно наследоваться от этого базового класса
- Поместите логику в шаблонный класс, в котором приложение должно передать собственную реализацию класса
- Опишите конкретную конфигурацию приложения в файле конфигурации и сгенерируйте код C ++ во время процесса сборки
- Укажите макросы, которые можно использовать для расширения «конфигурации» до фактического кода
Какие аргументы следует учитывать при выборе хорошей альтернативы?
Некоторые из этих альтернатив лучше других и почему?
Обратите внимание, что в моем случае производительность является главным приоритетом.