python学习 - 设计模式 - 原型模式实例代码

#!/usr/bin/python
# -*- coding:UTF-8 -*-

# 原型模式

import copy

def printInfo(info):
    print unicode(info, 'utf-8').encode('UTF-8')


# 拷贝接口
class ICloneable:
    def shallowClone(self):
        return copy.copy(self)

    def deepClone(self):
        return copy.deepcopy(self)


# 工作经历
class WorkExperience(ICloneable):
    workData = ""
    company = ""
    pass


# 简历
class Resume(ICloneable):
    name = ""
    sex = '未知'
    age = 0
    work = None

    def __init__(self, name, work=WorkExperience()):
        self.name = name
        self.work = work;

    def setPersonInfo(self, sex, age):
        self.sex = sex
        self.age = age

    def setWorkExperience(self, workData, company):
        self.work.workData = workData
        self.work.company = company

    def display(self):
        printInfo('%s, %s, %d' % (self.name, self.sex, self.age))
        printInfo('%s, %s' % (self.work.workData, self.work.company))


def clientUI():
    a = Resume('大鸟')
    a.setPersonInfo('男', 29)
    a.setWorkExperience("1998-2000", "XX公司")

    # 浅拷贝
    # b = a.shallowClone()
    # b.setWorkExperience("2000-2006", "YY公司")

    # 深拷贝
    c = a.deepClone()
    # c.setWorkExperience("2006-2009", "ZZ公司")

    # a.display()
    # b.display()
    c.display()
    return
    #浅拷贝,所以对象没有被复制,导致新对象的修改影响了原来的就对象的值
    #深拷贝,所以不会影响之前的旧对象
if __name__ == '__main__':
    clientUI();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值