Обсуждение статьи "Шаблоны проектирования в программировании на MQL5 (Часть 3): Поведенческие шаблоны 1"

 

Опубликована статья Шаблоны проектирования в программировании на MQL5 (Часть 3): Поведенческие шаблоны 1:

В новая статье серии, посвященной шаблонам проектирования, мы рассмотрим поведенческие шаблоны, чтобы понять, как эффективно создавать методы взаимодействия между созданными объектами. Спроектировав эти шаблоны поведения, мы сможем понять, как создавать многоразовое, расширяемое и тестируемое программное обеспечение.

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

  • Цепочка ответственности (Chain of responsibility)
  • Команда (command)
  • Интерпретатор (Interpreter)
  • Итератор (Iterator)
  • Медиатор (Mediator)
  • Напоминание (Memento)
  • Наблюдатель (Observer)
  • Состояние (State)
  • Стратегия (Strategy)
  • Метод шаблона (Template Method)
  • Посетитель (Visitor)


    Автор: Mohamed Abdelmaaboud

     

    после 

    дальше можно не читать

     
    Maxim Kuznetsov #:

    после 

    дальше можно не читать

    Это перевод с английского оригинала.


    Можете мысленно заменить на "обработчик". Ну или просто не читать, а писать свои статьи. 

    Статья по теме https://habr.com/ru/articles/113995/

    Паттерн проектирования «Цепочка обязанностей» / «Chain of Responsibility»
    Паттерн проектирования «Цепочка обязанностей» / «Chain of Responsibility»
    • 2011.02.17
    • habr.com
    Почитать описание других паттернов. Проблема Эффективно и компактно реализовать механизм обработки потока событий/запросов/сообщений в системах с потенциально большим количеством обработчиков. Описание Модель событие/обработчик широко применяется в программных системах из различных областей. В основном, это — графический интерфейс пользователя...
     
    Rashid Umarov #:

    Это перевод с английского оригинала.


    Можете мысленно заменить на "обработчик". Ну или просто не читать, а писать свои статьи. 

    Статья по теме https://habr.com/ru/articles/113995/

    не о переводе речь.. в статье текста практически и нет, поэтому к коду предвзятое строгое отношение

    код со скриншота имеет у вас шанс пройти code-review ?

    а поводу "писать свои" - вы в курсе дел, я предлагал серию про использование gcc и окружение msys2, но оказалось что кроме MSVC нельзя

     
    Maxim Kuznetsov #:

    А как по Вашему "правильно"?

     
    template<typename T>
    void ConcreteIterator::Next(void)
      {
       m_current++;
       if(!IsDone())
         {
         }
      }


    Это вообще для чего? Посмотрел материал по итераторам, есть такие варианты:

    1)

    template<typename T>
    void ConcreteIterator::Next(void)
      {
       m_current++;
      }

    2) 

    template<typename T>
    void ConcreteIterator::Next(void)
      {   
       if(!IsDone())
         {
           m_current++;
         }
      }
    Причина обращения: