2010-11-22 3 views
71

我々はインターネット上でおよそデザインパターンを読んだとき、我々は3つのカテゴリーがあることに注意してください。デザインパターンとアーキテクチャパターンの違いは何ですか?

  • 生成に関する
  • 構造
  • 行動

しかし、我々はのアーキテクチャを作成するにはMVP、MVC、またはMVVMについて考える。

たとえば、作成パターンの中でシングルトンパターンが見つかりましたが、自分のMPVでもシングルトンを使用しました。

私の質問です:デザインパターンは、製品の全体構造ですか?

  • 「はい」の場合、シングルトンはどのようにデザインパターンになりますか?アプリケーションのどこにでも使用できるからです。基本的には、一度に1つのインスタンスをメモリ内に作成するように制限されていますが、このコンセプトはソフトウェアの設計方法を定義していませんか?

  • MVP、MVC、MVVMの3つのカテゴリのパターンはどこですか?そして、ソフトウェアの設計とアーキテクチャの違いは何ですか?

+0

既に説明しました:https://stackoverflow.com/a/46419722/3649347 – GeekOnJava

答えて

121

詳細な説明が必要ですが、私が知っている限り、違いをスケッチしようとします。

パターンは、プログラムで見つかる共通点です。これにより、大きな複雑な構造を解体し、単純な部分を使って構築することができます。これは、一連の問題に対して一般的な解決策を提供します。

大規模な複雑なソフトウェアは、さまざまなレベルで一連の分解を行います。大きなレベルでは、アーキテクチャパターンがツールです。小さなレベルでは、デザインパターンがツールであり、実装レベルではプログラミングパラダイムがツールです。

非常に異なるレベルでパターンが発生する可能性があります。 Fractalsを参照してください。クイックソート、マージソートは、すべての順序で要素のグループを編成するためのアルゴリズムパターンです。最も単純なビューについて

Programming paradigms Specific to programming language 
...................... 
Design patterns   Solves reoccurring problems in software construction 
...................... 
Architectural patterns Fundamental structural organization for software systems 
...................... 

イディオムは、低レベルの詳細を入力特定パラダイムと言語固有のプログラミング技術です。

デザインパターンは通常、コードレベルの共通点に関連付けられています。それは、より小さなサブシステムを洗練し、構築するためのさまざまなスキームを提供します。通常、プログラミング言語の影響を受けます。一部のパターンは、language paradigmsのために重要ではない。 デザインパターンは、エンティティの構造と動作、およびそれらの関係のいくつかを明確にする中規模の手法です。

建築パターンは、設計パターンより高いレベルで共通性と見なされます。 アーキテクチャパターンは、システムのグローバルプロパティとメカニズムである大規模コンポーネントに関係する高度な戦略です。

パターンはどのように取得されますか? :

  1. 再利用、
  2. 分類
  3. と共通性を蒸留して、最終的な抽象化。

上記の考えに従っている場合は、シングルトンは「デザインパターン」であり、MVCは懸念の分離に対処するための「アーキテクチャ」パターンの1つです。

は上読んで試してみてください。

  1. http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
  2. http://en.wikipedia.org/wiki/Design_pattern
  3. http://en.wikipedia.org/wiki/Anti-pattern
+5

非常によく完成しています。今私はあなたがここに入れたときにみんなが差別化された用語を使うことを願っていました。私たちのマーケティング部のコーヒーディスペンサーの上の壁にあなたの答えのプリントをピン止めすることができますか?多分彼らはいつか理解するでしょう。;-) – ofi

+0

@ofi:ありがとう!言語構成の使用は、私たちを誤解させ、私たちを導くことができます。これは私がかなり強力だと分かっているものです。 – pyfunc

+0

私たちはインタビューの質問から私たちを救います。 –

0

さて、主要な部分については、言語の問題です。私の経験によれば、設計と建築の境界線は、ソフトウェアに関する限り、幅広い河川であり、水位に起因する幅は主にマーケティングの季節の影響を受けます。一般に、用語「設計」は、エンドユーザによって認識されるようなソフトウェア製品の挙動の強い側面とともに使用される一方、「アーキテクチャ」は、ソフトウェアの技術的構造を表す。 e。コンポーネント、ライブラリ、プロトコルなど、デザインを実現するために必要なものすべてを提供します。 「デザインパターン」には2つの役割があります。第1は、プロダクトではなく(多かれ少なかれ)標準問題を解決するためのベストプラクティスとみなされます。第2に、開発者がコミュニケーションをとるのに役立ちます。シングルトンの例を考えてみると、毎回説明するのではなく、指定されたデータ空間(変数など)を使用して単一のインスタンスを作成しただけで、単語を使用するだけでメカニックが何であるかを知ることができます私たちがクラスのコンストラクタなどを保護しているので、制御された方法であり、唯一のものであることが保証されています。あなたの質問への短い答えは、誰が話しているかによって異なります。それはある意味がありますか?

3

デザインパターンは、それ自体を何度も証明されていた方法で技術的な問題を解決するためのよく知られたパターンです。 デザインパターンは、再利用可能なオブジェクト指向ソフトウェアを作成するための共通の設計構造とプラクティスです。デザインパターンの例は、Factory Pattern、Singleton、Facade、Stateなどです。デザインパターンはアプリケーション全体の小さな問題を解決するために使用でき、全体のアーキテクチャよりも注入、変更、追加がはるかに簡単です

アーキテクチャパターンは良好ですソフトウェアアプリケーションアーキテクチャの問題を解決するための既知のパターン。ソフトウェアアプリケーションアーキテクチャとは、技術的および運用上の要件をすべて満たす構造化ソリューションを定義するプロセスです。 pplicationのアーキテクチャは、コード全体の「組織」です。異なるアーキテクチャーの例は、MVC、MVVM、MVP、n層(すなわちUI-BLL-DAL)などである。典型的にはアーキテクチャーを前もって決定する必要があり、アプリケーションの構築後に変更することは困難であることが多い。

関連する問題