Python设计模式之原型模式实例详解


Posted in Python onJanuary 18, 2019

本文实例讲述了Python设计模式之原型模式。分享给大家供大家参考,具体如下:

原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

一个原型模式的简单demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——原型模式
原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
原型模式是用场景:需要大量的基于某个基础原型进行微量修改而得到新原型时使用
"""
from copy import copy, deepcopy
# 原型抽象类
class Prototype(object):
  def clone(self):
    pass
  def deep_clone(self):
    pass
# 工作经历类
class WorkExperience(object):
  def __init__(self):
    self.timearea = ''
    self.company = ''
  def set_workexperience(self,timearea, company):
    self.timearea = timearea
    self.company = company
# 简历类  
class Resume(Prototype):
  def __init__(self,name):
    self.name = name
    self.workexperience = WorkExperience()
  def set_personinfo(self,sex,age):
    self.sex = sex
    self.age = age
    pass
  def set_workexperience(self,timearea, company):
    self.workexperience.set_workexperience(timearea, company)
  def display(self):
    print self.name
    print self.sex, self.age
    print '工作经历',self.workexperience.timearea, self.workexperience.company
  def clone(self):
    return copy(self)
  def deep_clone(self):
    return deepcopy(self)
if __name__ == '__main__':
  obj1 = Resume('andy')
  obj2 = obj1.clone() # 浅拷贝对象
  obj3 = obj1.deep_clone() # 深拷贝对象
  obj1.set_personinfo('男',28)
  obj1.set_workexperience('2010-2015','AA')
  obj2.set_personinfo('男',27)
  obj2.set_workexperience('2011-2017','AA') # 修改浅拷贝的对象工作经历
  obj3.set_personinfo('男',29)
  obj3.set_workexperience('2016-2017','AA') # 修改深拷贝的对象的工作经历
  obj1.display()
  obj2.display()
  obj3.display()

运行结果:

andy
男 28
工作经历 2011-2017 AA
andy
男 27
工作经历 2011-2017 AA
andy
男 29
工作经历 2016-2017 AA

上面类的设计如下图:

Python设计模式之原型模式实例详解

简历类Resume继承抽象原型的clone和deepclone方法,实现对简历类的复制,并且简历类引用工作经历类,可以在复制简历类的同时修改局部属性

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python实现从web抓取文档的方法
Sep 26 Python
Python去除字符串两端空格的方法
May 21 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
python3 读写文件换行符的方法
Apr 09 Python
使用python读取txt文件的内容,并删除重复的行数方法
Apr 18 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
python批量赋值操作实例
Oct 22 Python
python pygame实现方向键控制小球
May 17 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
May 27 #Python
Python中logging实例讲解
Jan 17 #Python
python矩阵/字典实现最短路径算法
Jan 17 #Python
python实现Dijkstra静态寻路算法
Jan 17 #Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 #Python
python实现dijkstra最短路由算法
Jan 17 #Python
Pycharm 设置默认头的图文教程
Jan 17 #Python
You might like
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
Smarty分页实现方法完整实例
2016/05/11 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
常用的js方法合集
2017/03/10 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
预备党员入党思想汇报
2014/01/04 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
新学期开学演讲稿
2014/05/24 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
车贷收入证明范本
2014/09/14 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
遗失说明具结保证书
2015/02/26 职场文书
教育教学读书笔记
2015/07/02 职场文书
责任书格式
2019/04/18 职场文书