ホームページ > Java > &#&チュートリアル > シングルトン パターンの初心者ガイド

シングルトン パターンの初心者ガイド

Linda Hamilton
リリース: 2024-10-29 06:28:31
オリジナル
652 人が閲覧しました

シングルトン パターン は、理解すべき最も基本的な概念の 1 つです。これは作成デザイン パターン として分類され、オブジェクトの作成を制御するために使用され、アプリケーションの存続期間全体を通じて特定のクラスのインスタンスが 1 つだけ存在することが保証されます。

簡単に言うと、クラスがそれ自体の 1 つのバージョンのみを管理する責任を負い、その単一のインスタンスへのグローバル アクセスを許可します。

では、シングルトン パターンをいつ使用するのか、なぜ使用するのか、これが最も一般的な質問の 1 つです。

シングルトン パターンを使用する場合と理由を詳しく説明する前に、問題のステートメントを理解することが重要です。各デザイン パターンは、開発者が直面する特定の課題に応じて作成されます。

問題ステートメント: データベース接続
アプリケーション全体でデータベースへの単一の接続を管理したいと考えています。複数の接続を作成すると、競合やリソースの枯渇につながる可能性があります。

// first instance
DataConnection dataConnection1 = new DataConnection();

//Second instance
DataConnection dataConnection2 = new DataConnection();
ログイン後にコピー
ログイン後にコピー

このシナリオでは、DataConnection の 2 つのインスタンスを作成すると、リソースの問題が発生する可能性があります。各インスタンスは独立して操作を実行する可能性があり、同じデータベース リソースに同時にアクセスしようとすると、競合や予期しない動作が発生することがあります。
この問題を解決するには、Singleton パターンが必要です。

シングルトン パターンをいつ使用する必要がありますか?

シングルトン パターンは、強力なツールですが簡単に悪用される可能性があるため、特にソフトウェア設計において確かに人気があります。シングルトン パターンを使用するのが適切な場合について理解しましょう:

シングルトン パターンを使用する場合

  1. クラスのインスタンスがグローバルに 1 つだけ必要な場合

    アプリケーション全体でインスタンスを 1 つだけ持つ必要があるクラスが必要な場合、シングルトン パターンが最良の選択です。 。これにより、アプリケーションのすべての部分が同じインスタンスで動作し、一貫性を維持し、メモリを浪費する可能性のある重複インスタンスを防止することができます。

  2. 共有リソースの一元管理が必要な場合

    シングルトンは、構成設定キャッシュ、またはロギング ツールなど、構成設定

  3. ロギング ツール
  4. など、アプリケーション。一元化されたアクセスと管理により、特にグローバルにアクセス可能で変更可能である必要があるクラスのリソース処理が簡素化されます。



    リソースへのアクセスを制御したい場合

    シングルトンを使用すると、単一リソースをクラス内にカプセル化することで、単一リソースへのアクセスを制御できます。これにより、ファイル ライターを管理して同期アクセスや共有ネットワーク接続を確保するなど、一度に 1 つの接続またはリソースのみを使用する必要がある場合に役立ちます。
  5. マルチスレッドまたは並列アプリケーションの場合

    複数のスレッドを備えたアプリケーションでは、シングルトンにより、重要なセクションや共有リソースが一度に複数のスレッドによってアクセスされないようにすることができます。適切に実装されたシングルトンはスレッドセーフなアクセスを提供し、競合状態の可能性を減らし、共有リソースの 1 つのインスタンスのみが同時にアクセスされるようにします。

問題といつ使用するかを理解しました。この問題に対処する方法を見てみましょう。

シングルトン パターンの UML 図

UML 図には通常、次のコンポーネントが含まれます。

  1. シングルトンクラス: インスタンス化を制限するクラスです。通常、単一のインスタンスを保持するためのプライベート静的インスタンス変数があります。
  2. コンストラクター: コンストラクターは、クラス外部からの直接インスタンス化を防ぐためにプライベートです。
  3. パブリック静的メソッド: このメソッドはインスタンスへのアクセスを提供します。インスタンスが存在しない場合はインスタンスが作成されます。それ以外の場合は、既存のインスタンスを返します。

シングルトン パターンの UML 図を簡単に表現すると、次のようになります。

Beginner’s Guide to the Singleton Pattern

:

  • -: プライベート アクセス修飾子 (インスタンス変数とコンストラクターがクラス外からアクセスできないことを示します)。
  • : パブリック アクセス修飾子 (getConnection() メソッドがパブリックにアクセスできることを示します)。

Javaの実装

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート