PROTOTYPE DESIGN:PYTHON
2050 ワード
プロトタイプ設計モードは、オブジェクトの概念が最初から作成された新しいオブジェクトの概念とは異なるクラス作成インスタンスの複雑さを隠すのに役立ちます.必要に応じて、新しくコピーしたオブジェクトがプロパティに変更される場合があります.この方法は製品の開発時間と資源を節約する.
import copy
class Prototype:
_type = None
_value = None
def clone(self):
pass
def getType(self):
return self._type
def getValue(self):
return self._value
class Type1(Prototype):
def __init__(self, number):
self._type = "TYPE1"
self._value = number
def clone(self):
return copy.copy(self)
class Type2(Prototype):
def __init__(self, number):
self._type = "TYPE2"
self._value = number
def clone(self):
return copy.copy(self)
class ObjectFactory:
__type1Value1 = None
__type1Value2 = None
__type2Value1 = None
__type2Value2 = None
@staticmethod
def initialize():
ObjectFactory.__type1Value1 = Type1(1)
ObjectFactory.__type1Value2 = Type1(2)
ObjectFactory.__type2Value1 = Type2(1)
ObjectFactory.__type2Value2 = Type2(2)
@staticmethod
def getType1Value1():
return ObjectFactory.__type1Value1.clone()
@staticmethod
def getType1Value2():
return ObjectFactory.__type1Value2.clone()
@staticmethod
def getType2Value1():
return ObjectFactory.__type2Value1.clone()
@staticmethod
def getType2Value2():
return ObjectFactory.__type2Value2.clone()
def main():
ObjectFactory.initialize()
instance = ObjectFactory.getType1Value1()
print("{0}: {1}".format(instance.getType(), instance.getValue()))
instance = ObjectFactory.getType1Value2()
print("{0}: {1}".format(instance.getType(), instance.getValue()))
instance = ObjectFactory.getType2Value1()
print("{0}: {1}".format(instance.getType(), instance.getValue()))
instance = ObjectFactory.getType2Value2()
print("{0}: {1}".format(instance.getType(), instance.getValue()))
if __name__ == "__main__":
main()