Как описано в мотивации использования Abstract Factory , мне нужен интерфейс, который я хочу быть очень гибким, то есть он должен иметь ряд возможных вариантов поведения. Итак, следуя шаблону проектирования AF, я определяю абстрактный класс с интерфейсными функциями следующим образом:
class WidgetFactory{
...
public:
CreateScrollBar();
CreateButton();
...
};
и затем я определяю конкретный подкласс WidgetFactory для каждого поведения, причем каждый подкласс реализует интерфейс для определенного поведения.
Моя проблема в том, что мой интерфейс довольно большой, то есть у меня есть 10 функций в абстрактном классе, и у каждой функции есть 4 возможных реализации. Так что получается, что я должен реализовать 4 ^ 10 подклассов, учитывающих каждое возможное поведение. Любая идея или предложение, как я мог избежать такого экспоненциального взрыва?