1700461623
private static int MAX_COUNT=6;
1700461624
1700461625
public static void main(String[]args){
1700461626
1700461627
//模拟发送邮件
1700461628
1700461629
int i=0;
1700461630
1700461631
//把模板定义出来,这个是从数据中获得
1700461632
1700461633
Mail mail=new Mail(new AdvTemplate());
1700461634
1700461635
mail.setTail(“XX银行版权所有”);
1700461636
1700461637
while(i<MAX_COUNT){
1700461638
1700461639
//以下是每封邮件不同的地方
1700461640
1700461641
Mail cloneMail=mail.clone();
1700461642
1700461643
cloneMail.setAppellation(getRandString(5)+“先生(女士)”);
1700461644
1700461645
cloneMail.setReceiver(getRandString(5)+”@”+getRandString(8)+”.com”);
1700461646
1700461647
//然后发送邮件
1700461648
1700461649
sendMail(cloneMail);
1700461650
1700461651
i++;
1700461652
1700461653
}
1700461654
1700461655
}
1700461656
1700461657
}
1700461658
1700461659
运行结果不变,一样完成了电子广告信的发送功能,而且sendMail即使是多线程也没有关系。注意,看Client类中的粗体字mail.clone()这个方法,把对象复制一份,产生一个新的对象,和原有对象一样,然后再修改细节的数据,如设置称谓、设置收件人地址等。这种不通过new关键字来产生一个对象,而是通过对象复制来实现的模式就叫做原型模式。
1700461660
1700461661
1700461662
1700461663
1700461665
设计模式之禅 13.2 原型模式的定义
1700461666
1700461667
原型模式(Prototype Pattern)的简单程度仅次于单例模式和迭代器模式。正是由于简单,使用的场景才非常地多,其定义如下:
1700461668
1700461669
Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype.(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。)
1700461670
1700461671
原型模式的通用类图如图13-3所示。
1700461672
[
上一页 ]
[ :1.700461623e+09 ]
[
下一页 ]