原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式本质就是克隆对象,所以在对象初始化操作比较复杂的情况下,很实用,能大大降低耗时,提高性能,因为“不用重新初始化对象,而是动态地获得对象运行时的状态”。
浅拷贝(Shallow Copy):指对象的字段被拷贝,而字段引用的对象不会被拷贝,拷贝的对象和源对象只是名称相同,但是他们共用一个实体。
深拷贝(deep copy):对对象实例中字段引用的对象也进行拷贝。
-
-
-
-
-
- import copy
-
- def printInfo(info):
- print unicode(info, 'utf-8').encode('gbk')
-
-
- 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公司")
-
- b.display()
- a.display()
- c.display()
- return
-
- if __name__ == '__main__':
- clientUI();
类图:
分享到:
相关推荐
python 实现 建造者模式 python 实现 状态模式1 python 实现 状态模式2(面向过程的方式-方法版) python 实现 状态模式3(分类版) ...python 实现 原型模式 python 实现 装饰模式 python 实现 组合模式
在Python中,实现原型模式相对简单,因为Python提供了内置的`copy`模块,可以方便地实现浅复制和深复制。在`Prototype.py`文件中,我们可能会看到以下代码结构: ```python class Prototype: def __init__(self, ...
python 实现 原型模式
Python原型模式是一种设计模式,它属于创建型设计模式,主要用于对象的复制或克隆。在Python中,由于其动态类型特性,实现原型模式相对简单,无需像其他静态语言那样实现特定接口。本示例将深入讲解如何在Python中...
在Python中,可以通过实现一个原型对象并提供克隆方法来实现原型模式。压缩包文件代码是一个简单的例子。 从输出结果可以看出,克隆对象的值在修改后不会影响原对象,这证明了克隆对象的独立性。 通过这种方式,你...
本文实例讲述了Python设计模式之原型模式。分享给大家供大家参考,具体如下: 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 一个原型模式的简单demo: #!/usr/bin/...
**原型模式(Prototype Pattern)详解** 在软件设计中,原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,避免了重复的构造过程,提高了代码的效率和可维护性。原型模式的核心思想...
5. **原型模式**:通过复制现有的对象来创建新对象,避免了复杂的初始化过程。 6. **适配器模式**:将一个类的接口转换成客户希望的另一个接口。适配器使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ...
1. **创建型模式**:包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式关注对象的创建过程,以避免直接实例化对象带来...
原型模式: 原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式本质就是克隆对象,所以在对象初始化操作比较复杂的情况下,很实用,能大大降低耗时,提高性能,因为“不用重新初始化对象,...
原型模式(Prototype Pattern)作为创建型模式的一种,通过复制现有对象来创建新对象,从而避免了使用构造函数直接实例化对象的过程。
原型模式(Prototype):通过复制现有的实例来创建新的实例,而不是通过构造函数。 结构型模式(Structural Patterns):这类模式关注类和对象的结构,主要有以下几种: 适配器模式(Adapter):允许将一个类的接口...
原型模式 单例模式 二、结构类 享元模式 代理模式 装饰器模式 适配器模式 桥接模式 外观模式 三、行为类 命令模式 访问者模式 责任链模式 备忘录模式 中介者模式 状态模式 模板方法模式 解释器模式 ...
使用原型模式克隆对象 使用适配器模式让不兼容的接口变得兼容 使用代理模式保障接口安全 使用策略模式动态选择算法 使用修饰器模式,在不使用子类化的情况下扩展对象 使用模型–视图–控制器模式将逻辑从用户界面...
创建型模式主要处理对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)以及原型模式(Prototype)。这些模式有助于我们控制对象的...
### 如何用JavaScript实现原型模式 #### 概述 原型模式是面向对象编程中的一个重要概念,在JavaScript中,这种模式尤其重要。它通过复制一个现有的对象实例来创建新的对象实例,而不是像传统类那样通过定义一个类...