データ、コンテキスト、インタラクション (DCI)を組織に売り込むのに最適な説明は何ですか?
MVC-patternの作成者であるTrygve Reenskaugによって作成されました。
本当にMVCの後継なのか、それとも別のパターンなのか? そして、その長所と短所は何ですか?
データ、コンテキスト、インタラクション (DCI)を組織に売り込むのに最適な説明は何ですか?
MVC-patternの作成者であるTrygve Reenskaugによって作成されました。
本当にMVCの後継なのか、それとも別のパターンなのか? そして、その長所と短所は何ですか?
Trygve がhttps://vimeo.com/8235394で DCI のプレゼンテーションを行います
DCI は、オブジェクト指向の問題を解決するために作成されました。OO コードをレビューするのは難しすぎます。
通常、OO の 1 つのユース ケースのコードは、多くのクラスに分散されます。コードがどのように機能するかを理解するには、実行時のオブジェクト間の関係も知っておく必要があります。これらの関係はコードでは設定されず、状況によって異なります。
DCI が提案しているのは、特定のユース ケースのコードをクラスから分離し、コンテキストと呼ばれる別のアーティファクトに入れることです。異なるクラスのオブジェクトは、このコンテキストで関係を結び、異なる役割を持つ相互作用に参加できます。
DCI の要点は、OO コードをより読みやすくすることです!
それが私がそれを投げる方法です。
私が得た印象は、MVCの後継というより補完的なものではないということです。たとえば、DCI に関する artima の記事の図 5 には両方があります。モデルとコントローラーの区別、またはコントローラーの異なる部分またはモデルの異なる部分の区別をより正気にするのに役立つはずだと思います。
基本的な考え方は、データ クラスの特定のアクションのロジックを分割し、(ユーザー) アクションごとに 1 つずつ、特性/ミックスイン/その他に移動することです。いくつかの大きなコードではなく、多くの小さなコードが含まれます。また、新しいミックスインを追加することは、基本クラスに機能を追加するよりも「優れている」と思われます。個々のアクションのコードはおそらく (私が思うに?) もっと分散されるでしょうが、異なるアクションのコードはより明確かつ明確に分離されるべきです。
良い質問であり、よくある質問です。簡単に言えば、Kay、Dahl などによる OO の創設のアイデアに基づいた、それ自体がパラダイムであるということです。いくつかの目標を念頭に置いて、Trygve Reenskaug によって作成されました。それらの 1 つは、IO 操作をプログラムの第一級市民にすることを目的としています。(ディスク操作のような IO ではなく、2 つの異なるオブジェクト間のすべての通信)。DCI のもう 1 つの重要な目標は、システムが行うこと (機能/動作) をシステムそのもの (データ) から分離することです。
システム理解の向上はどの組織にとっても大きなメリットだと思いますが、次の追加要因により、DCI は MVC の改善であると主張することもできます。
私には、Modern C++ デザインの Andrei Alexandrescu によるポリシー ベースのデザインのように見えますが、その作業はより低レベルであり、DCI は方法論の一部を備えたアーキテクチャのように見えます (ユース ケースがデザインを駆動します)。