0
0

サーバーサイドのデザインパターン[Singleton Patternの章]

Posted at

はじめに

  1. Singleton Patternの定義と特性
    Singleton Patternとは、特定のクラスのインスタンスが一つしか存在しないことを保証し、そのインスタンスへのアクセスポイントを提供するデザインパターンです。
    主に設定管理やログ管理、キャッシュなどの用途で利用されます。
  2. Singleton Patternの利点
  • リソースの節約
    インスタンスが一つしか存在しないため、リソースを節約できます。
  • 一貫性の確保
    シングルトンを通じてグローバルな状態を管理できます。
  • コントロールの集中
    インスタンスの生成を制御できるため、特定の処理を中央化できます。
  1. PythonでのSingleton Patternの実装
class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls)
        return cls._instance


singleton1 = Singleton()
singleton2 = Singleton()

assert singleton1 is singleton2  # これはTrueになります

上記のコードは、__new__メソッドをオーバーライドしてSingleton Patternを実装した一例です。
singleton1 と singleton2 は、同じインスタンスを参照します。
この実装はスレッドセーフではないため、マルチスレッド環境で利用する場合は、ロックを使用して同時アクセスを制御する必要があります。

注意点

多スレッド環境では、同時に複数のインスタンスが生成されないよう注意が必要です。
グローバルな状態を持つため、テストが困難になる可能性があります。

まとめ

Singleton Patternは、特定の種類のオブジェクトが一つしか存在しないことを保証し、それにアクセスするためのグローバルポイントを提供します。このパターンは、リソースの節約、一貫性の確保、コントロールの集中の利点を有していますが、テストの困難さや多スレッド環境での利用に注意が必要です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0