記事「ソフトウェア開発におけるデザインパターンとMQL5(第3回):振る舞いに関するパターン1」についてのディスカッション

 

新しい記事「ソフトウェア開発におけるデザインパターンとMQL5(第3回):振る舞いに関するパターン1」はパブリッシュされました:

デザインパターンの新しい記事として、その種類の1つである振る舞いに関するパターンを取り上げ、作成されたオブジェクト間の通信を効果的に構築する方法について説明します。これらの振る舞いに関するパターンを完成させることで、私たちは、再利用可能で、拡張可能で、テストされたソフトウェアをどのように作成し、構築できるかを理解できるようになります。

この記事では、オブジェクト間で責任をどのように割り当てたり設定したりするかに関係する振る舞いに関するパターンを提供します。また、オブジェクト同士がどのように通信や相互作用をおこなうかを識別することもできます。

  • 責任の連鎖
  • コマンド
  • インタプリタ
  • イテレータ
  • メディエーター
  • メメント
  • オブザーバー
  • 状態
  • 戦略
  • テンプレート方式
  • ビジター


    作者: Mohamed Abdelmaaboud

     

    その後

    それ以上読む必要はない

     
    Maxim Kuznetsov #:

    その後

    それ以上読む必要はない

    原文英語からの翻訳です。


    精神的に "handler "に置き換えてもいい。あるいは、読まずに自分で記事を書けばいい。

    トピックに関する記事https://habr.com/ru/articles/113995/

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

    これは英語の原文からの翻訳である。


    精神的に "handler "に置き換えてもいい。あるいは、読まずに自分で記事を書けばいい。

    トピックに関する記事https://habr.com/ru/articles/113995/

    この記事にはテキストがほとんどないので、コードに厳密なバイアスがかかっています。

    スクリーンショットのコードはコードレビューに合格する可能性がありますか?

    そして、「自分で書く」ことについて - あなたは知っている、私は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++;
         }
      }