シングルトンとは何ですか?
シングルトンパターンは、唯一のインスタンスであることができ、このモードでのデザインパターン、シングルトンオブジェクトクラスです。プロジェクトのいくつかの部分は、このようなログとして、コードの実行には影響しない場合は、シングルトンデザインパターンは、好ましくは、方法です。またシングルトングローバル・キャッシュの状態、負荷分散、ルートマップを使用して得ることができます。
シングルトンパターン分類
1.怠惰なシングルトンは
、単一たとえば、高いリソース使用率を作成するために、関連するメソッドを呼び出すマルチスレッドアクセスのコストを増やす必要があります。
singleton_lazy.py
class Singleton_Lazy():
__instance = None
def __init__(self):
pass
@staticmethod
def create_instance():
if not Singleton_Lazy.__instance:
Singleton_Lazy.__instance = Singleton_Lazy()
return Singleton_Lazy.__instance
test_lazy.py
from danli.singleton_lazy import Singleton_Lazy
dan1 = Singleton_Lazy().create_instance()
dan2 = Singleton_Lazy().create_instance()
print(dan1)
print(dan2)
dan3 =Singleton_Lazy()
dan4 =Singleton_Lazy()
print(dan3)
print(dan4)
2.空腹シングルトンは、
初期化時に自動的に、スレッドの安全性を確保するため、動作時間を節約し、リソース使用率を減らすために、シングルトンクラスを作成します。
singleton_hunger.py
class Singleton_Hunger():
instance = None
class __Singleton():
pass
def __new__(cls, *args, **kwargs):
if not Singleton_Hunger.instance:
cls.instance = Singleton_Hunger.__Singleton()
return cls.instance
test_hunger.py
from singleton_hunger import Singleton_Hunger
dan1 = Singleton_Hunger()
dan2 = Singleton_Hunger()
print(dan1)
print(dan2)
シングルトンの利点
1.単一のシングルトンオブジェクトの存在
2.減少メモリ消費量、増加リソース使用率
シングルトン欠点
例1単一グローバルに共有モードので、状態維持のシングルトンオブジェクトは、特別な注意が必要です。
ある程度「単機能の原則」に反する2.通常シングルトンオブジェクト重い義務、。
グローバル状態は、我々はプログラミングに警戒する必要がある場所で、プロジェクト内のいくつかのコードは、不必要なトラブルが生じ、グローバル状態に影響を与える可能性があります。実際の開発では、我々は虐待シングルトンパターンを回避する必要があります。
アプリケーションシングルトンパターン設計ロガー- > こちらをクリック