Python 官方文档:入门教程 => 点击学习
如何使用? 1.首先定义一个User类,它必须实现了Cloneable接口,重写了clone()方法。 public class User implements Cloneabl
1.首先定义一个User类,它必须实现了Cloneable接口,重写了clone()方法。
public class User implements Cloneable {
private String name;
private int age;
private Brother brother;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
2.Brother类
public class Brother{
private String name;
}
3.应用演示类
public class PrototypeDemo {
public static void main(String[] args) throws CloneNotSupportedException {
User user1 = new User();
user1.setName("秋红叶");
user1.setAge(20);
Brother brother1 = new Brother();
brother1.setName("七夜圣君");
user1.setBrother(brother1);
// 我们从克隆对象user2中修改brother,看看是否会影响user1的brother
User user2 = (User) user1.clone();
user2.setName("燕赤霞");
Brother brother2 = user2.getBrother();
brother2.setName("唐钰小宝");
System.out.println(user1);
System.out.println(user2);
System.out.println(user1.getBrother() == user2.getBrother());
}
}
4.深拷贝写法
这是User类
public class User implements Cloneable {
private String name;
private int age;
private Brother brother;
@Override
protected Object clone() throws CloneNotSupportedException {
User user = (User) super.clone();
user.brother = (Brother) this.brother.clone();
return user;
}
}
这是Brother类
public class Brother implements Cloneable{
private String name;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
这里是结果演示
public class PrototypeDemo {
public static void main(String[] args) throws CloneNotSupportedException {
User user1 = new User();
user1.setName("秋红叶");
user1.setAge(20);
Brother brother1 = new Brother();
brother1.setName("七夜圣君");
user1.setBrother(brother1);
// 我们从克隆对象user2中修改brother,看看是否会影响user1的brother
User user2 = (User) user1.clone();
user2.setName("燕赤霞");
Brother brother2 = user2.getBrother();
brother2.setName("唐钰小宝");
System.out.println(user1);
System.out.println(user2);
System.out.println(user1.getBrother() == user2.getBrother());
}
}
可以看到,user1的brother没有受到user2的影响,深拷贝成功!
5.图解深拷贝与浅拷贝
java中object类的clone()方法为浅拷贝必须实现Cloneable接口如果想要实现深拷贝,则需要重写clone()方法
到此这篇关于浅谈Java设计模式之原型模式知识总结的文章就介绍到这了,更多相关Java原型模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 浅谈Java设计模式之原型模式知识总结
本文链接: https://www.lsjlt.com/news/126816.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0