pythonでの設計モード_ファクトリモードとシングルモード
14102 ワード
工場モード
デザインモードはオブジェクト向け言語特有の内容で、私たちがある問題に直面したときに固定された方法で、デザインモードには多くの種類があり、比較的流行しているのはGOF(GoupOfFour)23種類のデザインモードです.ファクトリモードは作成者と呼び出し者の分離を実現し、専門のファクトリクラスを使用して実装クラスを選択し、オブジェクトを作成して統一的な管理と制御を行う.
実行結果
単一モード
SingletonPattern(SingletonPattern)の核心的な役割は、クラスが1つのインスタンスしかないことを保証し、そのインスタンスにアクセスするグローバルアクセスポイントを提供することです.
単一のインスタンス・モードでは、インスタンス・オブジェクトが1つしか生成されず、システム・リソースのオーバーヘッドが削減されます.コンフィギュレーション・ファイルの読み取り、その他の依存オブジェクトの生成など、オブジェクトの生成に多くのリソースが必要な場合、単一のオブジェクトを生成し、メモリに永続的に常駐させることで、オーバーヘッドを大幅に削減できます.
シングル・インスタンス・モードには様々な実装方法がありますが、ここでは書き換えを推奨します.new__()の方法.
実行結果
設計モードは「モード」と呼ばれ、いくつかの固定的な方法であり、前述した工場モードなど、他のシーンで簡単に使用できます.工場クラスを「単例」と定義するには、簡単なセットだけで実現できます.
実行結果
デザインモードはオブジェクト向け言語特有の内容で、私たちがある問題に直面したときに固定された方法で、デザインモードには多くの種類があり、比較的流行しているのはGOF(GoupOfFour)23種類のデザインモードです.ファクトリモードは作成者と呼び出し者の分離を実現し、専門のファクトリクラスを使用して実装クラスを選択し、オブジェクトを作成して統一的な管理と制御を行う.
#
class CarFactory:
def create_car(self,brand):
if brand ==" ":
return Benz()
elif brand ==" ":
return BMW()
elif brand == " ":
return BYD()
else:
return " , "
class Benz:
pass
class BMW:
pass
class BYD:
pass
factory = CarFactory()
c1 = factory.create_car(" ")
c2 = factory.create_car(" ")
print(c1)
実行結果
<__main__.Benz object at 0x0000025E26D510F0>
<__main__.BYD object at 0x0000025E26D51198>
単一モード
SingletonPattern(SingletonPattern)の核心的な役割は、クラスが1つのインスタンスしかないことを保証し、そのインスタンスにアクセスするグローバルアクセスポイントを提供することです.
単一のインスタンス・モードでは、インスタンス・オブジェクトが1つしか生成されず、システム・リソースのオーバーヘッドが削減されます.コンフィギュレーション・ファイルの読み取り、その他の依存オブジェクトの生成など、オブジェクトの生成に多くのリソースが必要な場合、単一のオブジェクトを生成し、メモリに永続的に常駐させることで、オーバーヘッドを大幅に削減できます.
シングル・インスタンス・モードには様々な実装方法がありますが、ここでは書き換えを推奨します.new__()の方法.
#
class MySingleton:
__obj = None #
__init_flag = True
def __new__(cls, *args, **kwargs):
if cls.__obj ==None:
cls.__obj = object.__new__(cls)
return cls.__obj
def __init__(self,name):
if MySingleton.__init_flag:
print("init.....")
self.name = name
MySingleton.__init_flag = False
a = MySingleton("aa")
b = MySingleton("bb")
print(a)
print(b)
c = MySingleton("cc")
print(c)
実行結果
<__main__.MySingleton object at 0x000001C63B898EF0>
<__main__.MySingleton object at 0x000001C63B898EF0>
<__main__.MySingleton object at 0x000001C63B898EF0>
設計モードは「モード」と呼ばれ、いくつかの固定的な方法であり、前述した工場モードなど、他のシーンで簡単に使用できます.工場クラスを「単例」と定義するには、簡単なセットだけで実現できます.
#
class CarFactory:
__obj = None #
__init_flag = True
def create_car(self,brand):
if brand ==" ":
return Benz()
elif brand ==" ":
return BMW()
elif brand == " ":
return BYD()
else:
return " , "
def __new__(cls, *args, **kwargs):
if cls.__obj ==None:
cls.__obj = object.__new__(cls)
return cls.__obj
def __init__(self):
if CarFactory.__init_flag:
print("init CarFactory....")
CarFactory.__init_flag = False
class Benz:
pass
class BMW:
pass
class BYD:
pass
factory = CarFactory()
c1 = factory.create_car(" ")
c2 = factory.create_car(" ")
print(c1)
print(c2)
factory2 = CarFactory()
print(factory)
print(factory2)
実行結果
<__main__.Benz object at 0x0000022DF3C01208>
<__main__.BYD object at 0x0000022DF3C01198>
<__main__.CarFactory object at 0x0000022DF3C010F0>
<__main__.CarFactory object at 0x0000022DF3C010F0>