您的位置:首页 > 其它

[设计模式]原型模式

2014-05-01 23:20 337 查看
定义:实现cloneable接口,不通过new一个对象出来,而是通过复制一个对象的模式叫做原型模式。

看下例子:

import java.util.Random;

public class Main {

public static void main(String[] args) {
Mail mail = new Mail();
mail.setMailTitle("XXX");
for (int i = 0; i < 10; i++) {
Mail cloneMail = mail.clone();
Random random= new Random();
cloneMail.sendMail(random.nextInt(15)+"");
}

}

}

class Mail implements Cloneable {
private String title;

public void setMailTitle(String title) {
this.title = title;
}

public void sendMail(String content) {
System.out.println(title + ":" + content);
}

@Override
protected Mail clone() {
Mail mail = null;
try {
mail = (Mail) super.clone();
} catch (Exception e) {
e.printStackTrace();
}
return mail;
}

}


执行结果就是title不变,内容发生很大的变化。

仔细观察cloneable接口的实现clone(),进行对象对拷贝,该方法主要是对Mail进行一个clone。

这样做的好处优点在于:

1.性能优良,原型模式是在内存中直接进行二进制拷贝,要比直接new一个对象对速度快很多,特别是在大量的进行循环中

2.逃避构造函数的一些约束,它是直接内存拷贝,不用执行够着函数的。当然缺点就是减少了约束。

在使用中根据自己的一些情况合理的应用。

使用场景描述:

通常用于一个类有多个修改者的场景,并且初始化需要很多资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: