在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 原型設計模式
反模式
隊列
適配器設計模式
享元設計模式
Python設計模式
工廠模式
模板設計模式
構建器(Builder)設計模式
Python設計模式概要
命令設計模式
Python設計模式簡介
觀察者設計模式
代理設計模式
異常處理
責任鏈設計模式
字典實現(xiàn)
抽象工廠設計模式
Python并發(fā)(多線程)
策略設計模式
門面(Facade)設計模式
原型設計模式
迭代器設計模式
集合
單例模式
列表數(shù)據(jù)結(jié)構
狀態(tài)設計模式
模型視圖控制器(MVC)模式
裝飾器設計模式
面向?qū)ο蟾拍畹膶崿F(xiàn)
面向?qū)ο笤O計模式
字符串和序列化

原型設計模式

原型設計模式有助于隱藏該類創(chuàng)建實例的復雜性,在對象的概念將與從頭創(chuàng)建的新對象的概念不同。

如果需要,新復制的對象可能會在屬性中進行一些更改。這種方法節(jié)省了開發(fā)產(chǎn)品的時間和資源。

如何實現(xiàn)原型模式?

現(xiàn)在讓我們看看如何實現(xiàn)原型模式。代碼實現(xiàn)如下 -

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):

   """ Concrete prototype. """

   def __init__(self, number):
      self._type = "Type2"
      self._value = number

   def clone(self):
      return copy.copy(self)

class ObjectFactory:

   """ Manages prototypes.
   Static factory, that encapsulates prototype
   initialization and then allows instatiation
   of the classes from these prototypes.
   """

   __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 "%s: %s" % (instance.getType(), instance.getValue())

   instance = ObjectFactory.getType1Value2()
   print "%s: %s" % (instance.getType(), instance.getValue())

   instance = ObjectFactory.getType2Value1()
   print "%s: %s" % (instance.getType(), instance.getValue())

   instance = ObjectFactory.getType2Value2()
   print "%s: %s" % (instance.getType(), instance.getValue())

if __name__ == "__main__":
   main()

執(zhí)行上面程序,將生成以下輸出 -

輸出中,使用現(xiàn)有的對象創(chuàng)建新對象,并且在上述輸出中清晰可見。


上一篇:命令設計模式下一篇:反模式