デザインパターン

デザインパターンは、ソフトウェア開発で再利用できる解決策です。プログラマーは、アプリケーションを作成するときに、デザインパターンをテンプレートとして使用できます。デザインパターンは個々のプログラミング言語に固有のものではなく、さまざまなプログラミング環境に適用できるベストプラクティスやヒューリスティックです。

デザインパターンは特定の言語に依存しませんが、オブジェクトやクラスを含むことがよくあります。そのため、通常はオブジェクト指向プログラミングと関連付けられます。個々のパターンは、1) 生成パターン、2) 構造パターン、3) 振る舞いパターンという3つの異なるカテゴリーに分類できます。

1. 生成パターン

生成デザインパターンは、さまざまな状況に適した方法を使ってオブジェクトを作成する方法を説明します。たとえば、「Singleton」パターンは、インスタンスを1つだけ持つ基本的なクラスを作成するために使用されます。一般的な例として、プログラムのソースコードで定義されるグローバル変数があります。「Object Pool」パターンは、必要に応じて取り出せるオブジェクトの「プール」を持つクラスを作成するために使用されます。オブジェクトを再作成する必要がないため、これはキャッシュによく使用されます。

2. 構造パターン

構造デザインパターンは、オブジェクト間の関係を定義します。たとえば、「Private Class Data」パターンは、特定のクラスへのアクセスを制限するために使用されます。これにより、オブジェクトが意図せず変更されるのを防ぐことができます。一方、「Decorator」クラスを使うと、オブジェクトに振る舞いや状態を実行時に追加できます。これにより、プログラマーは必要に応じてオブジェクトにいくつでもクラスを追加できる柔軟性を得られます。たとえば、ビデオゲーム内のアバターが、ゲーム中に武器、防具、アイテムを集めていく場合が挙げられます。このプロセスには、名前どおりの「Decorator」クラスが適したフレームワークを提供します。

3. 振る舞いパターン

振る舞いデザインパターンは、オブジェクト同士の通信方法など、オブジェクトの振る舞いを説明します。たとえば、「Command」パターンは、コマンドを実行するオブジェクトを説明します。「Memento」パターンは、保存した状態に戻せるようにオブジェクトの状態を記録します。この2つのパターンを組み合わせると、プログラムで元に戻す操作とやり直し操作を実行できます。

まとめ

3つのカテゴリーにはそれぞれ、プログラマーが使用できる複数のデザインパターンがあります。デザインパターンはソフトウェア開発者に役立つテンプレートを提供しますが、特定のアプリケーションには不要だったり、十分に具体的でなかったりすると批判されることもあります。そのため、デザインパターンはプログラミングに役立つツールですが、適切に設計されたソフトウェアプログラムを作成するために、必ずしも厳密に従う必要はありません。

更新日 July 21, 2016 著者: Per C.

quiz知識をテストする

Which of the following best describes a software container?

A
It is a package that contains everything a software program needs to run.
0%
B
It is an installer designed for multiple operating systems.
0%
C
It is a software installer that downloads files while it runs.
0%
D
It is a crash log submitted to the developer when a program crashes.
0%
Correct! Incorrect!     View the Container definition.
More Quizzes →

Tech Terms コンピューター辞書

このページのデザインパターンの定義は、TechTerms.comの著者が執筆したオリジナルの定義です。このページを参照または引用する場合は、定義の直下にある緑色の引用バーをご利用ください。

私たちの目標は、コンピューター用語をわかりやすく説明することです。すべての定義において正確さとわかりやすさを追求しています。フィードバックや新しい技術用語の提案がある場合は、お問い合わせください

Tech Terms ニュースレター

毎日または毎週のニュースレターで技術知識を高めましょう!今すぐ購読して、新しい用語やクイズをメールでお受け取りください。

無料のTechTermsニュースレターに登録する

メールの受信頻度を選択してください

各メールのリンクから、いつでも登録解除または頻度変更ができます。 ご質問はこちらからお問い合わせください。

注意:ニュースレターは英語で配信されます。