java设计模式——原型模式
2013-02-17 23:01
561 查看
《大话设计模式》第九章
原型模式,从字面意思来理解,不是很好理解,反正对我来说是这样的。原型模式其实就是克隆,必须实现Cloneable接口,然后要重写protected Object clone() throws CloneNotSupportedException这个方法。clone还分为浅复制和深复制。我的代码里的是深复制。
package ch09; public class WorkExperience implements Cloneable { private String workDate = null; private String company = null; public String getWorkDate() { return workDate; } public void setWorkDate(String workDate) { this.workDate = workDate; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } @Override protected Object clone() throws CloneNotSupportedException { WorkExperience workExperience = (WorkExperience)super.clone(); workExperience.company = new String(this.company); workExperience.workDate = new String(this.workDate); return workExperience; } }
package ch09; public class Resume implements Cloneable { private String name = null; private String sex = null; private int age = 0; private WorkExperience workExperience = null; public Resume(String name) { this.name = name; this.workExperience = new WorkExperience(); } public Resume(WorkExperience workExperience) throws CloneNotSupportedException { this.workExperience = (WorkExperience)workExperience.clone(); } public void setPersonalInfo(String sex, int age) { this.age = age; this.sex = sex; } public void setWorkExperience(String workDate, String company) { this.workExperience.setWorkDate(workDate); this.workExperience.setCompany(company); } public void display() { System.out.println(name + ", " + sex + ", " + age); System.out.println(workExperience.getWorkDate() + ", " + workExperience.getCompany()); } @Override protected Object clone() throws CloneNotSupportedException { Resume resume = new Resume(this.workExperience); resume.age = this.age; resume.name = this.name; resume.sex = this.sex; return resume; } }
package ch09; import java.text.SimpleDateFormat; public class Client { SimpleDateFormat sdf = new SimpleDateFormat(); /** * @param args * @throws CloneNotSupportedException */ public static void main(String[] args) throws CloneNotSupportedException { Resume a = new Resume("大鸟"); a.setPersonalInfo("男", 29); a.setWorkExperience("1998-2000", "X公司"); Resume b = (Resume)a.clone(); b.setWorkExperience("1998-2006", "Y公司"); Resume c = (Resume)a.clone(); c.setWorkExperience("1998-2003", "Z公司"); a.display(); b.display(); c.display(); } }
原型模式,从字面意思来理解,不是很好理解,反正对我来说是这样的。原型模式其实就是克隆,必须实现Cloneable接口,然后要重写protected Object clone() throws CloneNotSupportedException这个方法。clone还分为浅复制和深复制。我的代码里的是深复制。
相关文章推荐
- java设计模式---prototype(原型)模式
- java设计模式之原型模式
- JAVA设计模式是个什么玩意儿_05_原型模式
- Java设计模式:Prototype(原型)
- java设计模式之原型模式
- JAVA设计模式---原型模式--浅客隆和深克隆
- Java 设计模式:原型Prototype
- java设计模式(四)---原型模式
- Java:设计模式之原型模式(Prototype)
- java-设计模式-创建模式-原型模式prototype
- Java设计模式之原型模式
- Java设计模式(11) —— 原型
- Java的23种设计模式----原型模式
- Java设计模式之原型模式
- Java开发中的23种设计模式详解----原型模式
- Java设计模式之——原型模式
- JAVA设计模式(05):创建型-原型模式(Prototype)
- Java设计模式(三)原型模式 适配器模式
- 233_尚学堂_高淇_java300集最全视频教程_【GOF23设计模式】_原型模式_prototype_浅复制_深复制_反序列化实现深复制