python 设计模式 原型模式_原型设计模式

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

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

如何实现原型模式?

现在让我们看看如何实现原型模式。代码实现如下 -

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

执行上面程序,将生成以下输出 -

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

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值