シングルトン パターン は、理解すべき最も基本的な概念の 1 つです。これは作成デザイン パターン として分類され、オブジェクトの作成を制御するために使用され、アプリケーションの存続期間全体を通じて特定のクラスのインスタンスが 1 つだけ存在することが保証されます。
簡単に言うと、クラスがそれ自体の 1 つのバージョンのみを管理する責任を負い、その単一のインスタンスへのグローバル アクセスを許可します。
では、シングルトン パターンをいつ使用するのか、なぜ使用するのか、これが最も一般的な質問の 1 つです。
シングルトン パターンを使用する場合と理由を詳しく説明する前に、問題のステートメントを理解することが重要です。各デザイン パターンは、開発者が直面する特定の課題に応じて作成されます。
問題ステートメント: データベース接続
アプリケーション全体でデータベースへの単一の接続を管理したいと考えています。複数の接続を作成すると、競合やリソースの枯渇につながる可能性があります。
// first instance DataConnection dataConnection1 = new DataConnection(); //Second instance DataConnection dataConnection2 = new DataConnection();
このシナリオでは、DataConnection の 2 つのインスタンスを作成すると、リソースの問題が発生する可能性があります。各インスタンスは独立して操作を実行する可能性があり、同じデータベース リソースに同時にアクセスしようとすると、競合や予期しない動作が発生することがあります。
この問題を解決するには、Singleton パターンが必要です。
シングルトン パターンは、強力なツールですが簡単に悪用される可能性があるため、特にソフトウェア設計において確かに人気があります。シングルトン パターンを使用するのが適切な場合について理解しましょう:
クラスのインスタンスがグローバルに 1 つだけ必要な場合
アプリケーション全体でインスタンスを 1 つだけ持つ必要があるクラスが必要な場合、シングルトン パターンが最良の選択です。 。これにより、アプリケーションのすべての部分が同じインスタンスで動作し、一貫性を維持し、メモリを浪費する可能性のある重複インスタンスを防止することができます。
共有リソースの一元管理が必要な場合
シングルトンは、構成設定、キャッシュ、またはロギング ツールなど、構成設定
リソースへのアクセスを制御したい場合
マルチスレッドまたは並列アプリケーションの場合
複数のスレッドを備えたアプリケーションでは、シングルトンにより、重要なセクションや共有リソースが一度に複数のスレッドによってアクセスされないようにすることができます。適切に実装されたシングルトンはスレッドセーフなアクセスを提供し、競合状態の可能性を減らし、共有リソースの 1 つのインスタンスのみが同時にアクセスされるようにします。
問題といつ使用するかを理解しました。この問題に対処する方法を見てみましょう。
UML 図には通常、次のコンポーネントが含まれます。
シングルトン パターンの UML 図を簡単に表現すると、次のようになります。
注:
Java で実装されたシングルトン パターンの例を次に示します。
// first instance DataConnection dataConnection1 = new DataConnection(); //Second instance DataConnection dataConnection2 = new DataConnection();
データベース接続のインスタンスを取得したい場合は、DataConnection dataConnection = DataConnection.getConnection(); のように静的メソッドを呼び出します。
public class DataConnection { private static DataConnection instance = null; /* * This private keyword in constructor * is to prevent direct instantiation from * outside the class. */ private DataConnetion() { } /* * static method so that we can call * this method outside the class without * instantiation object */ public static DataConnection getConnection() { if (instance == null) { instance = new DataConnection(); } return instance; } public void showMessage() { System.out.println("Database is connected"); } }
シングルトン パターンは、アプリケーション全体で特定のクラスのインスタンスが 1 つだけ存在することを保証する基本的な設計パターンです。インスタンス化プロセスを制限し、単一インスタンスへのグローバル アクセスを提供することで、シングルトン パターンは、次のような共有リソースを効率的に管理するのに役立ちます。データベース接続、構成設定、ロガー。このパターンは、リソースへの一貫性と制御されたアクセスが重要なシナリオで特に役立ちます。
シングルトン パターンを効果的に実装するための詳細とベスト プラクティスについては、DigitalOcean のこのガイドを参照してください。
以上がシングルトン パターンの初心者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。