博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型模式
阅读量:4324 次
发布时间:2019-06-06

本文共 1471 字,大约阅读时间需要 4 分钟。

模式说明

所谓原型模式就是用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

说到复制,就会有深/浅两种复制,这是面向对象的值类型和引用类型的差异,具体不作说明

模式结构图

程序示例

说明:无

代码:

1 import copy 2 class WorkExp: 3     place="" 4     year=0 5     def __init__(self,p,y): 6         self.place=p 7         self.year=y 8  9 class Resume(WorkExp):10     name = ''11     age = 012     def __init__(self,n):13         self.name = n14     def SetAge(self,a):15         self.age = a16     def SetWorkExp(self,exp):17         self.place = exp.place18         self.year = exp.year19     def Display(self):20         print 'at %s, %s was %s years old,he studied in %s' %(self.year, self.name, self.age,self.place)21 22     def Clone(self):23         return self24 25 if __name__ == "__main__":26     a = Resume("wang")27     b = a.Clone()28     c = copy.copy(a)29     d = copy.deepcopy(a)30     a.SetAge(7)31     b.SetAge(13)32     c.SetAge(16)33     d.SetAge(19)34 35     exp_a = WorkExp('primaryschool',1994)    36     exp_b = WorkExp('middleschool',2000)37     exp_c = WorkExp('highschool',2003)38     exp_d = WorkExp('university',2006)39 40     a.SetWorkExp(exp_a)41     b.SetWorkExp(exp_b)42     c.SetWorkExp(exp_c)43     d.SetWorkExp(exp_d)44     a.Display()45     b.Display()46     c.Display()47     d.Display()

运行结果:

参考来源:

http://www.cnblogs.com/chenssy/p/3679190.html

http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html

http://www.cnblogs.com/Terrylee/archive/2006/07/17/334911.html

转载于:https://www.cnblogs.com/cotton/p/3930897.html

你可能感兴趣的文章
实验二+070+胡阳洋
查看>>
Linux IPC实践(3) --具名FIFO
查看>>
Qt之模拟时钟
查看>>
第一次接触安卓--记于2015.8.21
查看>>
(转)在分层架构下寻找java web漏洞
查看>>
mac下多线程实现处理
查看>>
C++ ifstream ofstream
查看>>
跟初学者学习IbatisNet第四篇
查看>>
seL4环境配置
查看>>
Git报错:insufficient permission for adding an object to repository database .git/objects
查看>>
ajax跨域,携带cookie
查看>>
BZOJ 1600: [Usaco2008 Oct]建造栅栏( dp )
查看>>
洛谷 CF937A Olympiad
查看>>
Codeforces Round #445 C. Petya and Catacombs【思维/题意】
查看>>
用MATLAB同时作多幅图
查看>>
python中map的排序以及取出map中取最大最小值
查看>>
ROR 第一章 从零到部署--第一个程序
查看>>
<form>标签
查看>>
vue去掉地址栏# 方法
查看>>
Lambda03 方法引用、类型判断、变量引用
查看>>