デザインパターン
デザインパターンは、ソフトウェア開発で再利用できる解決策です。プログラマーは、アプリケーションを作成するときに、デザインパターンをテンプレートとして使用できます。デザインパターンは個々のプログラミング言語に固有のものではなく、さまざまなプログラミング環境に適用できるベストプラクティスやヒューリスティックです。
デザインパターンは特定の言語に依存しませんが、オブジェクトやクラスを含むことがよくあります。そのため、通常はオブジェクト指向プログラミングと関連付けられます。個々のパターンは、1) 生成パターン、2) 構造パターン、3) 振る舞いパターンという3つの異なるカテゴリーに分類できます。
1. 生成パターン
生成デザインパターンは、さまざまな状況に適した方法を使ってオブジェクトを作成する方法を説明します。たとえば、「Singleton」パターンは、インスタンスを1つだけ持つ基本的なクラスを作成するために使用されます。一般的な例として、プログラムのソースコードで定義されるグローバル変数があります。「Object Pool」パターンは、必要に応じて取り出せるオブジェクトの「プール」を持つクラスを作成するために使用されます。オブジェクトを再作成する必要がないため、これはキャッシュによく使用されます。
2. 構造パターン
構造デザインパターンは、オブジェクト間の関係を定義します。たとえば、「Private Class Data」パターンは、特定のクラスへのアクセスを制限するために使用されます。これにより、オブジェクトが意図せず変更されるのを防ぐことができます。一方、「Decorator」クラスを使うと、オブジェクトに振る舞いや状態を実行時に追加できます。これにより、プログラマーは必要に応じてオブジェクトにいくつでもクラスを追加できる柔軟性を得られます。たとえば、ビデオゲーム内のアバターが、ゲーム中に武器、防具、アイテムを集めていく場合が挙げられます。このプロセスには、名前どおりの「Decorator」クラスが適したフレームワークを提供します。
3. 振る舞いパターン
振る舞いデザインパターンは、オブジェクト同士の通信方法など、オブジェクトの振る舞いを説明します。たとえば、「Command」パターンは、コマンドを実行するオブジェクトを説明します。「Memento」パターンは、保存した状態に戻せるようにオブジェクトの状態を記録します。この2つのパターンを組み合わせると、プログラムで元に戻す操作とやり直し操作を実行できます。
まとめ
3つのカテゴリーにはそれぞれ、プログラマーが使用できる複数のデザインパターンがあります。デザインパターンはソフトウェア開発者に役立つテンプレートを提供しますが、特定のアプリケーションには不要だったり、十分に具体的でなかったりすると批判されることもあります。そのため、デザインパターンはプログラミングに役立つツールですが、適切に設計されたソフトウェアプログラムを作成するために、必ずしも厳密に従う必要はありません。
知識をテストする