java设计模式-原型(prototype)
2024-09-25 08:07:14
有时候创建对象是需要耗费很多资源,但是每个对象之间又有大量的重复。我们可以选择在创建好一个对象后,以之作为模板克隆出其他对象,稍作修改,即可用于其他地方。
需要实现Cloneable接口,重写clone()方法。其实就是调用的Object类的clone()方法。
克隆对象只是复制了原对象的数据,每个对象还是独立的,他们的内存地址不同。
/**
* Created by wangbin10 on 2018/5/18.
*/
public class Prototype2 implements Cloneable,Serializable {
private static final long serialVersionUID = 2L;
private String name;
private Integer payAmount;
private String msg; public Prototype2() {
} public Prototype2(String name, Integer payAmount, String msg) {
this.name = name;
this.payAmount = payAmount;
this.msg = msg;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getPayAmount() {
return payAmount;
} public void setPayAmount(Integer payAmount) {
this.payAmount = payAmount;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Prototype2 clone() throws CloneNotSupportedException {
Prototype2 clone = (Prototype2) super.clone();
return clone;
}
}
/**
* Created by wangbin10 on 2018/5/18.
*/
public class PTest {
public static void main(String[] args) throws CloneNotSupportedException {
Prototype2 p1=new Prototype2("zhangsan",23,"hello!welcome to beijing!");
System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg());
Prototype2 p2 = p1.clone();
p2.setName("lisi");
p2.setPayAmount(24);
System.out.println(p2.getName()+p2.getPayAmount()+p2.getMsg());
System.out.println("============================");
System.out.println(p1.getName()+p1.getPayAmount()+p1.getMsg()); }
}
最新文章
- Sql Server之数据类型详解
- Java 中 手动抛出异常: throw new Exception(";错误信息";) 错误信息的获得
- 【原创】C#玩高频数字彩快3的一点体会
- [Mac]关闭所有打开finder
- 高频交易[z]
- placement new 操作符
- Ehcache详细解读(转载)
- openwrt+ndp+ndppd+radvd+dhcpv6,ipv6穿透配置指南
- [BZOJ]4810: [Ynoi2017]由乃的玉米田
- tkinter中text文本与scroll滚动条控件(五)
- 8个超实用的jQuery插件应用
- excel 获取当前日期
- Linux学习笔记之passwd:Authentication token manipulation error_错误的解决办法
- Windows下sklearn源码安装
- GO学习笔记 - map
- [SoapUI] 比较两个不同环境下XML格式的Response, 结果不同时设置Test Step的执行状态为失败
- monkey测试===Android测试工具Monkey用法简介(转载)
- zabbix_get :command not found 解决办法
- aoj0121
- Notification高级技巧