程序员人生 网站导航

第九话-原型模式

栏目:框架设计时间:2015-01-07 08:57:38

有钱啦,有钱啦,是买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颗爱你到老的心,所以你继续任性。

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐