设计23式—原型
来源:互联网 发布:淘宝详情图尺寸是多少 编辑:程序博客网 时间:2024/06/07 15:16
/* * 原型模式 */public class MyMain {public static void main(String[] args) {Mail mail=new Mail(new AdvTemplate());System.out.println("开始时间:"+new Date().getTime());for(int i=0;i<1000;i++){//不使用clone(),多线程调用同一个实例出现错误/*mail.setReceiver(i+"号");new Thread(new sendMail(mail)).start();*///原型模式,调用clone()方法,使得Mail能够适用与多线程Mail cloneMail=mail.clone();cloneMail.setReceiver(i+"号");new Thread(new sendMail(cloneMail)).start();}}}class Mail implements Cloneable {// 收件人private String receiver;// 邮件名称private String subject;// 邮件内容private String context;public Mail(AdvTemplate advTemplate) {this.context=advTemplate.getAdvContext();this.subject=advTemplate.getAdvSubject();}@Overrideprotected Mail clone() {Mail mail=null;try {mail=(Mail)super.clone();} catch (Exception e) {e.printStackTrace();}return mail;}public String getReceiver() {return receiver;}public void setReceiver(String receiver) {this.receiver = receiver;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContext() {return context;}public void setContext(String context) {this.context = context;}}class AdvTemplate {// 广告信名称private String advSubject = "A";// 广告信内容private String advContext = "B";// 取得广告信的名称public String getAdvSubject() {return this.advSubject;}// 取得广告信的内容public String getAdvContext() {return this.advContext;}}//发送信息的线程class sendMail implements Runnable{Mail mail=null;public sendMail(Mail mail) {this.mail=mail;}@Overridepublic void run() {System.out.println("收件人:"+mail.getReceiver()+",名称:"+mail.getSubject()+",内容:"+mail.getContext()+",时间:"+new Date().getTime());}}//扩展//clone不会拷贝数组、引用对象数据地址上的数据,只是拷贝的引用,可通过手动调用对象的clone()实现数据地址上的数据拷贝。
阅读全文
0 0
- 设计23式—原型
- 设计模式—原型模式
- 设计模式—原型模式
- 设计模式—原型模式
- 设计模式—原型模式
- 设计模式——原型设计模式
- 设计模式——原型设计模式
- 原型设计
- 原型设计
- 原型设计
- 原型设计
- 23种设计模式之原型模式
- 23种设计模式-5-原型模式
- 23种设计模式之原型模式
- 23设计模式之原型模式(Prototype)
- 23设计模式之原型模式(Prototype)
- 设计模式23篇:原型模式
- 23种设计模式---原型实例
- 1.1数组和链表:160. Intersection of Two Linked Lists(Leetcode)
- CBK精准扶贫走进广东省暨全国代理商大会圆满落幕
- Tensorflow入门(MNIST学习)
- 欢迎使用CSDN-markdown编辑器
- Android图片放大缩小自由移动控件
- 设计23式—原型
- golang使用protobuf简易教程
- TensorFlow 辨异 —— tf.placeholder 与 tf.Variable
- 深度优先搜索(DFS)
- 10.28C语言练习
- python基本语法笔记(完结)
- python脚本发送邮件
- INTERSPEECH 2017系列 | 语音识别技术之自适应技术
- 光流法_特征点选择