文档介绍:www . ChinaSA . info D esign P atterns D esign P atterns 原型模式原型模式刘伟(Sunny) weiliu_china@ www . ChinaSA . info 大纲?原型模式概述?原型模式的结构与实现?原型模式的应用实例?原型管理器?原型模式的优缺点与适用环境 www . ChinaSA . info 原型模式概述?孙悟空“拔毛变小猴” www . ChinaSA . info 原型模式概述?分析?孙悟空:根据自己的形状复制(克隆) 出多个身外身?软件开发:通过复制一个原型对象得到多个与原型对象一模一样的新对象 www . ChinaSA . info 原型模式概述?原型模式的定义?对象创建型模式原型模式: 使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。 Prototype Pattern: Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype . www . ChinaSA . info 原型模式概述?原型模式的定义?工作原理: 将一个原型对象传给要发动创建的对象(即客户端对象),这个要发动创建的对象通过请求原型对象复制自己来实现创建过程?创建新对象(也称为克隆对象)的工厂就是原型类自身, 工厂方法由负责复制原型对象的克隆方法来实现?通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,每一个克隆对象都是独立的?通过不同的方式对克隆对象进行修改以后, 可以得到一系列相似但不完全相同的对象 www . ChinaSA . info 原型模式的结构与实现?原型模式的结构 prototype Client -- prototype copy : Prototype : Prototype + Operation () ... ...... copy = (); ...... Prototype + Clone () ... : Prototype ConcretePrototypeA + Clone () ... : Prototype ConcretePrototypeB + Clone () ... : Prototype return copy of this www . ChinaSA . info 原型模式的结构与实现?原型模式的结构?原型模式包含以下 3个角色: ? Prototype (抽象原型类) ? ConcretePrototype (具体原型类) ? Client (客户类) www . ChinaSA . info 原型模式的结构与实现?浅克隆与深克隆?浅克隆(Shallow Clone) :当原型对象被复制时, 只复制它本身和其中包含的值类型的成员变量,而引用类型的成员变量并没有复制 www . ChinaSA . info 原型模式的结构与实现?浅克隆与深克隆?深克隆(Deep Clone) :除了对象本身被复制外, 对象所包含的所有成员变量也将被复制