`
- 浏览:
117777 次
- 性别:
- 来自:
济南
-
原始模型模式,我认为也可以称为克隆模式,就是由一个完整的产品对象复制出另一个对象的模式。它也是对象的创建模式,但是只与原始对象有关,不需要工厂类。
原始模型模式最成功的应用之一就是Object类的clone方法,可能由于这种方法的存在,很多人没有意识到原始模型模式是一种特定的创建模式。但是,它的确是一种产生对象的模式,而且clone方法所实现的只是原始模型模式的一种情况。
原始模型模式的对象创建方式有两种,可以分别称为浅复制和深复制:浅复制就是从原对象复制出新的对象时,并不复制它的成员对象,即它的成员对象句柄所指向的还是原对象中的成员对象;深复制就是在新对象中,成员对象也是新的。
Word-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
package prototype;
public interface Prototype ...{
public void printPart();
Object flatClone();
Object deepClone() throws Exception;
}
package prototype;
import Java.io.*;
public class ConcretePrototype implements Prototype , Serializable...{
private Part part;
public ConcretePrototype() ...{
part = new Part();
}
public void printPart() ...{
System.out.println(part);
}
public Object flatClone() ...{
ConcretePrototype cp = new ConcretePrototype();
cp.part = this.part;
return cp;
}
public Object deepClone() throws Exception ...{
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(this);
ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
ObjectInputStream oi = new ObjectInputStream(bi);
return (oi.readObject());
}
class Part implements Serializable ...{
}
}
package prototype;
public class Client ...{
public static void main(String[] args) throws Exception ...{
ConcretePrototype originate, cloned, deepCloned;
originate = new ConcretePrototype();
Thread.sleep(2000);
cloned = (ConcretePrototype)originate.flatClone();
deepCloned = (ConcretePrototype)originate.deepClone();
System.out.println(originate);
System.out.println(cloned);
System.out.println(deepCloned);
originate.printPart();
cloned.printPart();
deepCloned.printPart();
}
}
下面是这段代码的打印:
prototype.ConcretePrototype@1034bb5
prototype.ConcretePrototype@19efb05
prototype.ConcretePrototype@723d7c
prototype.ConcretePrototype$Part@b162d5
prototype.ConcretePrototype$Part@b162d5
prototype.ConcretePrototype$Part@22c95b
可以看出,打印的前三行各不相同,这说明通过浅复制和深复制,所得到的对象都是与原对象不同的;打印的后三行中有两行相同,这说明,在浅复制时,成员对象的实体没有被复制,只是复制了其句柄,而深复制时,成员对象的实体也被复制了。
资料引用:http://www.knowsky.com/361977.html
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Java与模式.清晰.rar 第一部分 第1章 模式的简史和形而上学 第2章 统一建模语言UML简介 ...第20章 原始模型(Prototype)模式 第21章 专题:JavaBean的“冷藏”和“解冻” 第四部分 第22章 适配器(Adapter)模式[1]
4. **原始模型模式(Prototype模式)**: 原始模型模式通过克隆一个已有对象来创建新对象,避免重复编写相同代码。比如,收集一些肉麻情话,需要时直接复制使用。这种模式适用于需要频繁创建相似对象的情况,但每个...
4. 原始模型模式(Prototype Pattern) 原始模型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类,产品类不...
17. 原始模型模式(Prototype) 原始模型模式用原型实例指定创建对象的种类,并且通过拷贝这个原型创建新的对象。这种模式使得对象创建可以灵活地变化。 18. 代理模式(Proxy) 代理模式为其他对象提供一个代理以...
4. 原始模型模式(Prototype): 原始模型模式是通过克隆已有对象来创建新对象的设计模式。它提供了一种通过复制现有的对象来创建新对象的方式,减少了创建新对象的复杂度,尤其适用于对象创建成本较高的情况。原始...
Prototype 原始模型模式 原始模型模式是一种基于已存在的实例创建新实例的方式,通过复制一个现有实例来生成新的实例,而无需知道其具体实现细节。例如,在即时通讯软件中,可以通过复制预先设置好的情话模板,...
4. 原始模型模式(Prototype模式):原始模型模式允许通过复制原型对象来创建新对象,提供了动态地增加或减少产品类的能力,且无需关心产品的具体实现细节。 5. 单例模式:单例模式保证一个类只有一个实例,并提供...
4. 原始模型模式(Prototype): 原始模型模式通过克隆已有对象来创建新对象,简化了对象的创建过程。客户端可以要求一个原型对象克隆自身,以得到与原型相同或相似的新对象,而无需知道具体实现细节。 5. 单例...
com.javapatterns.prototype 原始模型模式 com.javapatterns.proxy 代理模式 com.javapatterns.proxy.smartproxy 专题:智能引用代理 com.javapatterns.proxy.imageloader 专题:虚拟代理的例子 ...
4. 原始模型模式(Prototype Pattern): 原型模式也属于创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化新的类。这种方法可以提高性能,特别是在创建对象非常耗时或者需要大量初始化工作时。 ...
- **原始模型模式(Prototype模式)**:原型模式通过复制已有对象来创建新对象,避免了直接构造新对象的复杂性。比如,收集一些情话并复制到聊天软件中,就可以快速发送给不同的对象。 - **单例模式**:单例模式...
4. 原始模型模式(Prototype模式):该模式通过复制原型对象来创建新对象,允许动态地增加或减少产品类,适用于没有预定义等级结构的产品类集合。 5. 单例模式:单例模式确保一个类只有一个实例,并提供全局访问点...
<br>第一部份、UML和模式介绍 com.javapatterns.uml 统一建模语言UML介绍... com.javapatterns.prototype 原始模型模式 com.javapatterns.serializable 专题:JavaBean的“冷藏”和“解冻”
4. 原始模型模式(Prototype):原型模式是另一种创建型模式,它通过克隆现有的对象来创建新的对象。这种方法减少了创建新对象的开销,特别是当对象创建过程复杂时。原型模式允许动态地增加或减少产品类,对产品类的...
原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...
1.1.4. Prototype—原始模型模式:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。例如,我搜集了好多肉麻的情话,可以用来和MM聊天。 1.1.5. Singleton—...
4. 原始模型模式(Prototype):原型模式通过复制已有对象创建新对象,减少了创建新对象的成本。如例子中,将肉麻情话保存为原型,需要时直接复制到聊天工具中。 5. 单例模式(Singleton):单例模式确保一个类只有...
- 原始模型模式(Prototype):通过复制已有对象来创建新对象,避免了重复的初始化过程。 - 单例模式:保证一个类只有一个实例,并提供全局访问点,通常用于管理共享资源或全局配置。 2. 结构模式:关注如何组织...
Java原型模型(Prototype)是设计模式中的一种,主要用于对象的克隆操作,它允许我们创建对象的副本,而无需知道具体实现的细节。这个模式基于Java语言中的`Cloneable`接口和`clone()`方法,使得我们可以高效地复制...
7. **原始模型模式(Prototype)**:通过克隆原型对象来创建新对象,简化了对象的创建过程。原始模型模式适用于需要频繁创建相似对象的情况,但要求所有类都实现克隆接口。 8. **代理模式(Proxy)**:为其他对象...