首页 > 代码库 > 第九话-原型模式
第九话-原型模式
有钱啦,有钱啦,是买MX4PRO还是6?知道我是怎么有那么多money的么?请学习原型模式。
一、什么是原型模式?
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
注:类是抽象的,对象是具体的。
换句话说:你有一份简历(具体的),你想要10份,那就以此份为原件复印10份(具体的),OK。
二、为什么要用原型模式?
1、解决复杂类变动的困扰问题;
2、快速实例对象。
三、例子(简历)
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("***");
}
}
四、总结
原型模式虽然很好理解,但是代码实现时感觉有些不对,不知道为什么,是我错了么?求告诉。
最近流行一句话:就是任性。哥木房木车木存款,但哥有一颗爱你到老的心,所以你继续任性。
第九话-原型模式