《java与模式》学习系列——原始模型模式

来源:互联网 发布:创业软件复牌消息 编辑:程序博客网 时间:2024/04/29 05:43

 

一、原始 (Prototype)模式结构图

通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多的对象。原始模型模式有两种表现形式:第一种是简单形式,第二种是登记形式。

简单形式结构图如下:

登记形式:

两种形式比较:

如果创建的原型对象数目较少而且比较固定的话,可以采取简单形式的原始模型模式。

如果创建的原型对象数目不固定的话,可以采取登记形式的原型模式。在这种情况下,客户端并不保存对原型对象的引用,这个任务被交给管理员对象。

 

浅复制和深复制

浅复制仅仅福之所考虑的对象,而不复制它所引用的对象。

深复制中那些引用其他对象的变量将指向被复制过的新对象,也就是深复制把要复制的对象所引用的对象都复制了一遍。

二、原始模式在java中的应用

Java中的对象复制

Java语言的构件模型直接支持原始模型模式。尽管Object类提供了一个clone()方法,可以将一个javaBean对象复制一份,但是这个JavaBean必须实现一个标识接口Cloneable

一般而言,clone()方法满足一下的描述:

1、 对任何的对象x,都有:x.clone()!=x。换言之,克隆对象与原对象不是同一个对象。

2、 对任何的对象下,都有:x.clone().getClass==x.getClass(),换言之,克隆对象与原对象的类型一样

3、 如果对象xequals()方法定义合适的话,那么x.clone().equals(x)应当成立。

三、原始模型模式的优点

1、 原始模型模式允许动态地增加或减少产品类。由于创建产品类实例的方法是产品类内部具有的,因此,增加新产品的对整个结构没有影响。

2、 原始模型模式提供简化的创建结构。工厂方法模式常常需要有一个与产品类等级相同的结构,而原始模型模式就不需要这样。

3、 具有给一个应用软件动态加载新功能的能力。

4、 产品类不需要非得有任何事先确定的等级结构,因为原始模型模式适用于任何的等级。

 

原创粉丝点击