原型设计模式

来源:互联网 发布:西西软件乐园下载 编辑:程序博客网 时间:2024/05/16 06:30
package 原型模式;


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());




}
}





1 0