`

原型模式(python)

阅读更多

原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式本质就是克隆对象,所以在对象初始化操作比较复杂的情况下,很实用,能大大降低耗时,提高性能,因为“不用重新初始化对象,而是动态地获得对象运行时的状态”。

浅拷贝(Shallow Copy):指对象的字段被拷贝,而字段引用的对象不会被拷贝,拷贝的对象和源对象只是名称相同,但是他们共用一个实体。
深拷贝(deep copy):对对象实例中字段引用的对象也进行拷贝。

 

 

[python] view plaincopy
  1. #encoding=utf-8  
  2. #  
  3. #by panda  
  4. #原型模式  
  5.   
  6. import copy  
  7.   
  8. def printInfo(info):  
  9.     print unicode(info, 'utf-8').encode('gbk')  
  10.   
  11. #拷贝接口  
  12. class ICloneable:  
  13.     def shallowClone(self):  
  14.         return copy.copy(self)  
  15.       
  16.     def deepClone(self):  
  17.         return copy.deepcopy(self)  
  18.   
  19. #工作经历  
  20. class WorkExperience(ICloneable):  
  21.     workData = ""  
  22.     company = ""  
  23.     pass  
  24.   
  25. #简历  
  26. class Resume(ICloneable):  
  27.     name = ""  
  28.     sex = '未知'  
  29.     age = 0  
  30.     work = None  
  31.       
  32.     def __init__(self, name, work = WorkExperience()):  
  33.         self.name = name  
  34.         self.work = work;  
  35.       
  36.     def setPersonInfo(self, sex, age):  
  37.         self.sex = sex  
  38.         self.age = age  
  39.       
  40.     def setWorkExperience(self, workData, company):  
  41.         self.work.workData = workData  
  42.         self.work.company = company      
  43.       
  44.     def display(self):  
  45.         printInfo('%s, %s, %d' % (self.name,self.sex,self.age))  
  46.         printInfo('%s, %s' % (self.work.workData, self.work.company))  
  47.   
  48. def clientUI():  
  49.     a = Resume('大鸟')  
  50.     a.setPersonInfo('男',29)  
  51.     a.setWorkExperience("1998-2000","XX公司")      
  52.       
  53.     #浅拷贝  
  54.     b = a.shallowClone()  
  55.     b.setWorkExperience("2000-2006","YY公司")          
  56.       
  57.     #深拷贝  
  58.     c = a.deepClone()  
  59.     c.setWorkExperience("2006-2009","ZZ公司")      
  60.       
  61.     b.display()  
  62.     a.display()   
  63.     c.display()      
  64.     return  
  65.   
  66. if __name__ == '__main__':  
  67.     clientUI();  


类图:

 

 

 

 

分享到:
评论

相关推荐

    python 实现 设计模式

    python 实现 建造者模式 python 实现 状态模式1 python 实现 状态模式2(面向过程的方式-方法版) python 实现 状态模式3(分类版) ...python 实现 原型模式 python 实现 装饰模式 python 实现 组合模式

    设计模式专题之(五)原型模式---设计模式原型模式示例代码(python--c++)

    在Python中,实现原型模式相对简单,因为Python提供了内置的`copy`模块,可以方便地实现浅复制和深复制。在`Prototype.py`文件中,我们可能会看到以下代码结构: ```python class Prototype: def __init__(self, ...

    python 实现 原型模式

    python 实现 原型模式

    python 原型模式(示例)

    Python原型模式是一种设计模式,它属于创建型设计模式,主要用于对象的复制或克隆。在Python中,由于其动态类型特性,实现原型模式相对简单,无需像其他静态语言那样实现特定接口。本示例将深入讲解如何在Python中...

    通过python实现原型模式(Prototype Pattern).rar

    在Python中,可以通过实现一个原型对象并提供克隆方法来实现原型模式。压缩包文件代码是一个简单的例子。 从输出结果可以看出,克隆对象的值在修改后不会影响原对象,这证明了克隆对象的独立性。 通过这种方式,你...

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

    本文实例讲述了Python设计模式之原型模式。分享给大家供大家参考,具体如下: 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 一个原型模式的简单demo: #!/usr/bin/...

    创建型模式之原型模式(Prototype Pattern)

    **原型模式(Prototype Pattern)详解** 在软件设计中,原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,避免了重复的构造过程,提高了代码的效率和可维护性。原型模式的核心思想...

    python实现23种设计模式.设计模式python语言版

    5. **原型模式**:通过复制现有的对象来创建新对象,避免了复杂的初始化过程。 6. **适配器模式**:将一个类的接口转换成客户希望的另一个接口。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ...

    Python-图说设计模式

    1. **创建型模式**:包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式关注对象的创建过程,以避免直接实例化对象带来...

    设计模式中的原型模式在Python程序中的应用示例

    原型模式: 原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式本质就是克隆对象,所以在对象初始化操作比较复杂的情况下,很实用,能大大降低耗时,提高性能,因为“不用重新初始化对象,...

    Python 程序语言设计模式思路-创建型模式:原型模式:通过复制现有对象来创建新对象,面向对象编程

    原型模式(Prototype Pattern)作为创建型模式的一种,通过复制现有对象来创建新对象,从而避免了使用构造函数直接实例化对象的过程。

    设计模式python模版

    原型模式(Prototype):通过复制现有的实例来创建新的实例,而不是通过构造函数。 结构型模式(Structural Patterns):这类模式关注类和对象的结构,主要有以下几种: 适配器模式(Adapter):允许将一个类的接口...

    设计模式python-design-patterns.zip

    原型模式 单例模式 二、结构类 享元模式 代理模式 装饰器模式 适配器模式 桥接模式 外观模式 三、行为类 命令模式 访问者模式 责任链模式 备忘录模式 中介者模式 状态模式 模板方法模式 解释器模式 ...

    精通python设计模式与源码

    使用原型模式克隆对象 使用适配器模式让不兼容的接口变得兼容 使用代理模式保障接口安全 使用策略模式动态选择算法 使用修饰器模式,在不使用子类化的情况下扩展对象 使用模型–视图–控制器模式将逻辑从用户界面...

    精通python设计模式源码

    创建型模式主要处理对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)以及原型模式(Prototype)。这些模式有助于我们控制对象的...

    【JavaScript源代码】怎样用JavaScript实现原型模式.docx

    ### 如何用JavaScript实现原型模式 #### 概述 原型模式是面向对象编程中的一个重要概念,在JavaScript中,这种模式尤其重要。它通过复制一个现有的对象实例来创建新的对象实例,而不是像传统类那样通过定义一个类...

Global site tag (gtag.js) - Google Analytics