1. ホーム
  2. design-patterns

[解決済み] デザインパターンとアーキテクチャパターンの違いは何ですか?

2022-04-29 02:35:18

質問

について読むと デザインパターン インターネット上では、3つのカテゴリーに分類されていることがわかります。

  • 創作
  • 構造的
  • ビヘイビア

しかし、ソフトウェアのアーキテクチャを作るときには、MVPやMVC、MVVMについて考えることになります。

例えば、クリエイティブ・パターンの中で、私が見つけたのは シングルトンパターン しかし、私のMPVでもsingletonを使用したことがあります。

そこで質問なのですが、デザインパターンとは、製品の全体的な構造を表すものなのでしょうか?

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

  • そうでないとすると、MVP、MVC、MVVMはパターンの3つのカテゴリーの中でどこに位置するのでしょうか。また、ソフトウェアの設計とアーキテクチャの違いは何でしょうか?

どのように解決するのですか?

詳細な説明が必要ですが、私の知る限りでは、その違いをスケッチしてみます。

パターン は、プログラムの中に見出される共通点を抽出したものです。大きな複雑な構造を分解し、単純な部品を使って構築することができる。これは、ある種の問題に対する一般的な解決策を提供する。

大規模で複雑なソフトウェアは、さまざまなレベルで一連の解体を経ることになります。大きなレベルでは、アーキテクチャ・パターンがツールになります。また、実装レベルでは、プログラミングパラダイムが道具となる。

パターンは非常に異なるレベルで発生する可能性があります。参照 フラクタル . クイックソート,マージソートは,いずれも要素群を順序立てて整理するためのアルゴリズムパターンである.

最も単純化した見方をすると

  • プログラミングパラダイム - プログラミング言語固有
  • デザインパターン - ソフトウェア構築において繰り返し発生する問題を解決します。
  • アーキテクチャのパターン - ソフトウェアシステムにおける基本的な構造構成

イディオム は、低レベルの詳細を埋める、パラダイム固有かつ言語固有のプログラミング技術です。

デザインパターン は、通常、コードレベルの共通性に関連しています。より小さなサブシステムを洗練させ構築するための様々なスキームを提供する。これは通常、プログラミング言語の影響を受けます。いくつかのパターンは、以下の理由で無意味になる。 言語パラダイム . デザインパターンは、実体やその関係の構造や振る舞いの一部を具体化する、中規模の戦術です。

一方 アーキテクチャーパターン は、デザインパターンよりも高いレベルでの共通性と見なされている。 アーキテクチャパターンは、大規模なコンポーネント、システムのグローバルな特性やメカニズムに関わる高水準の戦略である。

パターンはどのようにして得られるのか? それは

  1. 再利用する。
  2. 分類
  3. そして最後に共通点を抽出するために抽象化します。

以上のような考えをお持ちの方は、ぜひ参考にしてください。シングルトンはデザイン・パターンであり、MVCはアーキテクチャ・パターンの1つで、関心事の分離に対処するものであることがおわかりいただけると思います。

読み進めてみてください。

  1. http://en.wikipedia.org/wiki/Architectural_pattern_(コンピュータサイエンス)
  2. http://en.wikipedia.org/wiki/Design_pattern
  3. http://en.wikipedia.org/wiki/Anti-pattern