(Python3 代码实现)《大话设计模式》六:原型模式

在这里插入图片描述

  • 模式特点:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
  • 程序实例:从简历原型,生成新的简历
  • 代码特点:简历类Resume提供的Clone()方法其实并不是真正的Clone,只是为已存在对象增加了一次引用。
  • Python为对象提供的copy模块中的copy方法和deepcopy方法已经实现了原型模式,但由于例子的层次较浅,二者看不出区别。
import copy

class Resume:
    name = ''
    age = 0

    def __init__(self, n):
        self.name = n

    def SetAge(self, a):
        self.age = a

    def SetWorkExp(self, p, y):
        self.place = p
        self.year = y

    def Display(self):
        print(self.age)
        print(self.place)
        print(self.year)

    def Clone(self):
        # 实际不是“克隆”,只是返回了自身
        return self


if __name__ == "__main__":
    a = Resume("a")
    b = a.Clone()
    c = copy.copy(a)
    d = copy.deepcopy(a)
    a.SetAge(7)
    b.SetAge(12)
    c.SetAge(15)
    d.SetAge(18)
    a.SetWorkExp("PrimarySchool", 1996)
    b.SetWorkExp("MidSchool", 2001)
    c.SetWorkExp("HighSchool", 2004)
    d.SetWorkExp("University", 2007)
    a.Display()
    b.Display()
    c.Display()
    d.Display()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值