原型设计模式
来源:互联网 发布:西西软件乐园下载 编辑:程序博客网 时间:2024/05/16 06:30
public class Person implements Cloneable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//下面实现的是浅克隆
public Person clone(){
try {
Person person=(Person)super.clone();
return person;
} catch (CloneNotSupportedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return null;
}
}
package 原型模式;
import java.util.List;
import java.util.ArrayList;
public class Dog implements Cloneable{
private String name;
private List<String> friends=new ArrayList<String>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getFriends() {
return friends;
}
public void setFriends(List<String> friends) {
this.friends = friends;
}
@Override
protected Dog clone() throws CloneNotSupportedException{
// TODO 自动生成的方法存根
Dog dog=(Dog)super.clone();
List <String> newFriends=new ArrayList<String>();
for(String friend:this.friends){
newFriends.add(friend);
}
dog.setFriends(newFriends);
if(dog!=null){
return dog;
}
return null;
}
}
package 原型模式;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
Person p1=new Person();
p1.setName("zbx");
p1.setAge(27);
System.out.println(p1.getName()+","+p1.getAge());
System.out.println("浅克隆!");
Person p2=p1.clone();
System.out.println(p2.getName()+","+p1.getAge());
p2.setName("zbx21ambition");
System.out.println(p2.getName()+","+p1.getAge());
System.out.println("深克隆!");
Dog d1=new Dog();
List<String> list1=new ArrayList<String>();
list1.add("haha");
list1.add("hehe");
d1.setName("Tom");
d1.setFriends(list1);
System.out.println(d1.getName()+","+d1.getFriends());
Dog d2=d1.clone();
System.out.println(d2.getName()+","+d2.getFriends());
list1.add("enen");
System.out.println(d1.getName()+","+d1.getFriends());
System.out.println(d2.getName()+","+d2.getFriends());
}
}
- 设计模式:原型模式
- 设计模式------原型模式
- 设计模式 原型模式
- 设计模式-【原型模式】
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 设计模式- 原型模式
- 设计模式:原型模式
- 设计模式 - 原型模式
- 设计模式-原型模式
- 【设计模式】原型模式
- 设计模式-原型模式
- 设计模式-原型模式
- 【设计模式】原型模式
- 设计模式----原型模式
- 设计模式------原型模式
- andorid 短信通知广播接收。
- python封装安卓查找元素方法V1.0
- HDU 5656 CA Loves GCD dp,常数优化
- oracle中如何将日期转成时间戳
- jQuery_如何用js或jQuery实现input失焦后,为空则为红色边框,不为空则为绿色边框?
- 原型设计模式
- 如何上传本地代码到git/coding
- MyEclipse配置输出控制台信息至文本文件中
- c# 委托与事件 学习笔记
- dos命令映射文件夹为虚拟磁盘分区
- cin.()和cin.getline()
- Android多线程
- C++ 输入输出控制流
- JS中字符串比较大小判断的问题(转数字比较)