Очень оригинально, и продуманно :)
Особо радует последняя строчка сообщения))
Браво. Хорошая иллюстрация.
В конфигураторе шаблон не нужен. У вас же фабрики реализуют интерфейс, вот его можно и прописывать.
Интерфейсы в MQL профанация чистой воды, т.к. by design, интерфесы это горизонтальные связи (контракты), но множественное наследование интерфейсов в MQL запрещено.
UPD:
Комбинатор верно указал:
template < typename FactoryType > CConfigurator( FactoryType AFactory *factory ) { m_factory = factory; m_bottle = m_factory.CreateBottle(); m_liquid = m_factory.CreateLiquid(); }Однако, шаблон необходим, если вместо interface использовать class.
UPD:
Комбинатор верно указал:
Однако, шаблон необходим, если вместо interface использовать class.В MQL нет разницы между абстрактным классом и интерфейсом. Сейчас интерфейсы в MQL это просто нелепица.
Не понятно, почему фабрика не сделана шаблоном с типами бутылки и напитка, или без шаблона но с конструктором, принимающем инстансы нужных типов. При расширении номенклатуры бутылок и напитков - плодить для каждого новый фактически пустой класс специальной фабрики - не комильфо. Тем более, что бутылок и напитков может быть много разных, а число сочетаний будет расти в геометрической прогрессии.
PS. А вообще-то сайт вроде про алготрейдинг. Какие нафиг бутылки и напитки? Что за намек? ;-)
Не понятно, почему фабрика не сделана шаблоном с типами бутылки и напитка, или без шаблона но с конструктором, принимающем инстансы нужных типов. При расширении номенклатуры бутылок и напитков - плодить для каждого новый фактически пустой класс специальной фабрики - не комильфо. Тем более, что бутылок и напитков может быть много разных, а число сочетаний будет расти в геометрической прогрессии.
PS. А вообще-то сайт вроде про алготрейдинг. Какие нафиг бутылки и напитки? Что за намек? ;-)
Совершенно верно. Это недостаток паттерна. Воспроизведена каноническая структура.
А в чем смысл? Что теперь с этим делать?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я составил скрипт, который представляет собой попытку реализовать этот паттерн в MQL5.
Демонстрация паттерна осуществлена на примере создания завода алкогольной и безалкогольной продукции.
Абстрактная фабрика создает абстрактные бутылки и жидкости.
Заводы создают соответственно вино, лимонад, бутылки под вино и лимонад.
В конфигураторе все настраивается. Для этого есть специальный класс.
В общем-то код с комментариями. Там все понятно.
В результате запуска скрипта получим такой текст: