38

データ、コンテキスト、インタラクション (DCI)を組織に売り込むのに最適な説明は何ですか?

MVC-patternの作成者であるTrygve Reenskaugによって作成されました。

本当にMVCの後継なのか、それとも別のパターンなのか? そして、その長所と短所は何ですか?

4

5 に答える 5

48

Trygve がhttps://vimeo.com/8235394で DCI のプレゼンテーションを行います

DCI は、オブジェクト指向の問題を解決するために作成されました。OO コードをレビューするのは難しすぎます。

通常、OO の 1 つのユース ケースのコードは、多くのクラスに分散されます。コードがどのように機能するかを理解するには、実行時のオブジェクト間の関係も知っておく必要があります。これらの関係はコードでは設定されず、状況によって異なります。

DCI が提案しているのは、特定のユース ケースのコードをクラスから分離し、コンテキストと呼ばれる別のアーティファクトに入れることです。異なるクラスのオブジェクトは、このコンテキストで関係を結び、異なる役割を持つ相互作用に参加できます。

DCI の要点は、OO コードをより読みやすくすることです!

それが私がそれを投げる方法です。

于 2010-08-27T05:48:56.867 に答える
17

私が得た印象は、MVCの後継というより補完的なものではないということです。たとえば、DCI に関する artima の記事の図 5 には両方があります。モデルとコントローラーの区別、またはコントローラーの異なる部分またはモデルの異なる部分の区別をより正気にするのに役立つはずだと思います。

基本的な考え方は、データ クラスの特定のアクションのロジックを分割し、(ユーザー) アクションごとに 1 つずつ、特性/ミックスイン/その他に移動することです。いくつかの大きなコードではなく、多くの小さなコードが含まれます。また、新しいミックスインを追加することは、基本クラスに機能を追加するよりも「優れている」と思われます。個々のアクションのコードはおそらく (私が思うに?) もっと分散されるでしょうが、異なるアクションのコードはより明確かつ明確に分離されるべきです。

于 2009-03-21T17:01:58.140 に答える
5

良い質問であり、よくある質問です。簡単に言えば、Kay、Dahl などによる OO の創設のアイデアに基づいた、それ自体がパラダイムであるということです。いくつかの目標を念頭に置いて、Trygve Reenskaug によって作成されました。それらの 1 つは、IO 操作をプログラムの第一級市民にすることを目的としています。(ディスク操作のような IO ではなく、2 つの異なるオブジェクト間のすべての通信)。DCI のもう 1 つの重要な目標は、システムが行うこと (機能/動作) をシステムそのもの (データ) から分離することです。

于 2012-03-14T12:23:59.170 に答える
1

システム理解の向上はどの組織にとっても大きなメリットだと思いますが、次の追加要因により、DCI は MVC の改善であると主張することもできます。

  1. システムの動作とデータを明確に分離すると、ドメイン オブジェクトのフットプリントが小さくなるため、リアルタイム分析のパフォーマンスが向上するなど、データ集約アクティビティに多くの利点がもたらされます。
  2. データ オブジェクトと動作オブジェクトの再利用は、システム内の混合データ/動作オブジェクトのサブセット全体にランダムに配置されているかのように粒子状になるのではなく、独自の場所がある場合、機能部門間ではるかに簡単に再利用できます。
  3. BDD が事実上のアジャイル方法論になりつつあるため、この組織は業界の他の組織よりも数年先を行っており、同様の考えを持つ他の組織のロール モデルとなる可能性があります。
于 2012-05-21T00:39:24.300 に答える
0

私には、Modern C++ デザインの Andrei Alexandrescu によるポリシー ベースのデザインのように見えますが、その作業はより低レベルであり、DCI は方法論の一部を備えたアーキテクチャのように見えます (ユース ケースがデザインを駆動します)。

于 2010-04-05T13:21:45.010 に答える