返回首页
当前位置: 主页 > 编程语言 > Python教程 >

Python设计模式-原型

时间:2020-02-21 17:26来源:电脑教程学习网 www.etwiki.cn 编辑:小山哥

原型设计模式有助于隐藏类创建的实例的复杂性。现有对象的概念将与从头创建的新对象的概念不同。

如果需要,新复制的对象可能会对属性进行一些更改。这种方法节省了开发产品所需的时间和资源。

如何实现原型模式?

现在让我们看看如何实现原型模式。

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

输出量

上面的程序将生成以下输出-

原型模式

输出有助于使用现有对象创建新对象,并且在上述输出中清晰可见。

------分隔线----------------------------
标签(Tag):
------分隔线----------------------------
推荐内容
  • Python设计模式-外立面

    外观设计模式为子系统中的一组接口提供了统一的接口。 它定义了任何子系统都可以使用...

  • Python设计模式-原型

    原型设计模式有助于隐藏类创建的实例的复杂性。 现有对象的概念将与从头创建的新对象...

  • Python设计模式-生成器

    生成器模式是一种独特的设计模式,可以帮助您使用简单的对象并使用算法方法来构建复杂...

  • Python设计模式-工厂

    工厂模式位于创建模式列表类别下。 它提供了创建对象的最佳方法之一。 在工厂模式下,...

  • Python设计模式-Singleton

    这种模式将类的实例化限制为一个对象。 它是一种创建模式,仅涉及一个类来创建方法和...

  • 库和框架

    在本章中,我们将深度学习与不同的库和框架相关联。 深度学习和Theano 如果我们想开始...

猜你感兴趣