有錢啦,有錢啦,是買MX4PRO還是6?知道我是怎樣有那末多money的么?請學習原型模式。
1、甚么是原型模式?
原型模式:用原型實例指定創建對象的種類,并且通過拷貝這些原型創建新的對象。
注:類是抽象的,對象是具體的。
換句話說:你有1份簡歷(具體的),你想要10份,那就以此份為原件復印10份(具體的),OK。
2、為何要用原型模式?
1、解決復雜類變動的困擾問題;
2、快速實例對象。
3、例子(簡歷)
Main.java
public class Main {
public static void main(String[] args) {
Resume r1 = new Resume("1", "李無才","男",22,"Android");
Resume r2 = (Resume) r1.clone();
r2.setName("李美女");
r2.setGender("女");
r2.setAge(21);
r2.setSkill("Java");
Resume r3 = (Resume) r2.clone();
r1.show();
r2.show();
r3.show();
}
}
ProtoType.java
public abstract class ProtoType {
private String id;
public ProtoType(String id){
this.id = id;
}
public String getId(){
return this.id;
}
public abstract Object clone();
}
Resume.java
public class Resume extends ProtoType {
private String name;
private String gender;
private int age;
private String skill;
public Resume(String id) {
super(id);
// TODO Auto-generated constructor stub
}
public Resume(String id, String name, String gender, int age, String skill){
super(id);
this.name = name;
this.gender = gender;
this.age = age;
this.skill = skill;
}
@Override
public Object clone() {
// TODO Auto-generated method stub
Resume resume = new Resume("clone",name, gender, age, skill);
return resume;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
public void show(){
System.out.println("我的簡歷");
System.out.println("NAME:"+this.name);
System.out.println("GENDER:"+this.gender);
System.out.println("AGE:"+this.age);
System.out.println("SKILL:"+this.skill);
System.out.println("***");
}
}
4、總結
原型模式雖然很好理解,但是代碼實現時感覺有些不對,不知道為何,是我錯了么?求告知。
最近流行1句話:就是任性。哥木房木車木存款,但哥有1顆愛你到老的心,所以你繼續任性。
上一篇 數據結構基礎(4) --快速排序