技術共有

デザインパターン利用シナリオの実装例とメリット・デメリット(クリエイティブパターン - シングルトンパターン、ビルダーパターン、プロトタイプパターン)

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

創作パターン

シングルトンパターン

Java でのシングルトン パターンの使用シナリオは、他のプログラミング言語のシナリオと似ています。その主な目的は、クラスにインスタンスが 1 つだけ存在するようにし、グローバル アクセス ポイントを提供することです。以下に、いくつかの一般的な使用シナリオとシングルトン パターンの詳細な説明を示します。

使用するシーン

  1. リソース使用量の制御

    • データベース接続プール: データベース接続は高価なリソースです。シングルトン モードを使用すると、接続プール インスタンスが 1 つだけ存在し、接続リソースが統合管理され、接続の作成と破棄が繰り返されることがなくなり、システムのパフォーマンスが向上します。
    • スレッドプール: シングルトン モードでは、スレッド プール インスタンスが 1 つだけ存在するようにし、スレッドを集中管理し、システム効率を向上させることができます。
  2. グローバル構成管理

    • プロファイル管理: システム内の構成は通常グローバルです。シングルトン モードを使用すると、構成ファイルが 1 回だけロードされ、グローバルに共有されるため、複数のロードによるリソースの無駄が回避されます。
    • ログマネージャー: ログ システムは通常、アプリケーション内でグローバルになります。シングルトン モードでは、ログ マネージャー インスタンスの一意性が確保され、ログ出力の統合管理が容易になります。
  3. ステータス管理

    • キャッシュ管理: 一部のシステムでは、一部のデータをキャッシュする必要があります。シングルトン モードを使用すると、キャッシュ マネージャー インスタンスの一意性が確保され、キャッシュの一貫性と統合管理が保証されます。
    • 端末管理: プリンターやシリアル デバイスなどの一部の物理デバイスの場合、シングルトン モードでは、デバイス マネージャーの唯一のインスタンスを確保して、デバイスが複数のオブジェクトによって同時に操作されるのを防ぐことができます。

実装例(Java)

Java でシングルトン パターンを実装する例を次に示します。

ハングリースタイルのシングルトンパターン

Hungry スタイルのシングルトン パターンは、クラスがロードされるときにインスタンスを作成します。

public class Singleton {
    // 在类加载时创建实例
    private static final Singleton INSTANCE = new Singleton();

    // 私有化构造函数,防止外部实例化
    private Singleton() {}

    // 提供一个公共的访问方法
    public static Singleton getInstance() {
        return INSTANCE;
    }
}