Обсуждение статьи "Шаблоны проектирования в программировании на MQL5 (Часть I): Порождающие шаблоны (Creational Patterns)"

 

Опубликована статья Шаблоны проектирования в программировании на MQL5 (Часть I): Порождающие шаблоны (Creational Patterns):

Существуют методы, которые можно использовать для решения типовых задач. Поняв один раз, как использовать эти методы, можно затем эффективно писать программы и применять концепцию DRY ("Не повторяйся"). В этом контексте очень полезными оказываются шаблоны проектирования, которые могут давать решения хорошо описанных и повторяющихся проблем.

Классы порождающего шаблона используют концепцию наследования, то есть они могут наследовать свойства и методы от других классов. Это позволяет изменять поведение класса, превращая его в экземпляр (объект), который соответствует определенным требованиям. Объект порождающего шаблона делегирует задачу создания нового экземпляра (инстанциирования) другому объекту. Когда в программе акцент делается на композиции объектов, а не на наследовании классов, порождающие шаблоны становятся более важными.

Можно сказать, что у таких шаблонов есть две повторяющиеся темы:

  • Они используют концепцию инкапсуляции для получения знаний о конкретных классах, которые система может использовать.
  • Они делают метод создания экземпляров классов и их объединения скрытым.

Порождающие паттерны дают гибкость в плане того, что создается, кем, как и когда.

Они также позволяют абстрагировать процесс инстанциирования, поскольку позволяют создавать объекты, не повторяя одну и ту же реализацию. Все это делает код более гибким и простым.


Автор: Mohamed Abdelmaaboud

 

Думал, переводчики немного накосячили в подразделе про абстрактную фабрику, ан нет - сам автор.

Какую проблему проектирования он решает?

Итак, мы можем использовать этот шаблон когда:

  • ТУТ ПУСТО
  • Нужна независимая система.
  • Нужна сконфигурированная система с одним из многих семейств продуктов.
  • Нужно использовать семейство связанных продуктов вместе в соответствии с дизайном и обеспечить соблюдение этого ограничения.
  • Нужно раскрыть только интерфейсы предоставленного класса, а не их реализацию.

Примеры использования такого Абстрактной фабрики:

В англ.исходнике так:

What design problem does it solve?

So, we can use this pattern in the case of the following:

  • We need an independent system.
  • We need a configured system with one of many families of products.
  • We need to use a family of related product objects together as per its design and enforce this constraint.
  • We need to reveal just interfaces of the provided class, not their implementation.


 
Спасибо, поправили
 

Ещё немного поворчу...

Чтобы быть точным в терминологии, буду попутно смотреть англ. исходник статьи. Итак, про каждый шаблон автор пишет "How we can use it in MQL5?" (с англ. "Как его использовать в MQL5?" ). Тут стоит отметить, что MQL5 - это прикладной специализированный язык. И что же? Действительно  узнаем из материала, как можно использовать шаблоны в MQL5? Нет! Видим, что просто идёт реализация шаблона на MQL5. Имхо, раз это шаблон, стоило бы сначала описать его на псевдокоде, а только потом на MQL5. Ну и в идеале интересно посмотреть на практические примеры использования шаблонов проектирования в MQL5. Не знаю, может я забегаю впереди паровоза, и автор планирует рассматривать каждый шаблон в отдельном опусе. Но пока имеем то, что имеем...



Design Patterns in software development and MQL5 (Part I): Creational Patterns
Design Patterns in software development and MQL5 (Part I): Creational Patterns
  • www.mql5.com
There are methods that can be used to solve many problems that can be repeated. Once understand how to use these methods it can be very helpful to create your software effectively and apply the concept of DRY ((Do not Repeat Yourself). In this context, the topic of Design Patterns will serve very well because they are patterns that provide solutions to well-described and repeated problems.
Причина обращения: