原型模式

来源:互联网 发布:手机淘宝缓存文件在哪 编辑:程序博客网 时间:2024/05/10 14:57

不多说,都在代码中:

package com.pattern.dhsjpattern.sx;/** * 原型模式:属于对象的创建模式,通过一个原型来给出创建对象的类型,然后通过克隆的方式复制出更多该实例对象 * 深复制:不仅复制数值型数据同时还复制引用数据类型的数据,换言之引用数据类型不指向原来的地址 * 浅复制:只克隆数值型数据,不复制引用数据类型的数据,换言之引用数据类型还指向原来的地址 * @author 00922993 * */public class PrototypePattern {public static void main(String[] args) {Resume resume = new Resume("梅西");WorkExpercise expercise = new WorkExpercise("巴萨");resume.setExpercise(expercise);try {Resume r = resume.clone();System.out.println(resume.getExpercise()==r.getExpercise());} catch (CloneNotSupportedException e) {e.printStackTrace();}}}class Resume implements Cloneable{public Resume(){}public Resume(String name){this.name = name;}private String name;private WorkExpercise expercise;public String getName() {return name;}public void setName(String name) {this.name = name;}public WorkExpercise getExpercise() {return expercise;}public void setExpercise(WorkExpercise expercise) {this.expercise = expercise;}@Overrideprotected Resume clone() throws CloneNotSupportedException {Resume r = null;r = (Resume) super.clone();r.expercise = expercise.clone();//加上这条语句的话,引用数据类型数据进行了克隆为深复制(或者深克隆),否则为浅复制return r;}public void display(){System.out.println(name+"=="+expercise);//+age+expercise.toString()}}class WorkExpercise implements Cloneable{//private String company;public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}public WorkExpercise(){}public WorkExpercise(String company){this.company = company;}protected WorkExpercise clone() throws CloneNotSupportedException {return (WorkExpercise)super.clone();}@Overridepublic String toString() {return "在"+company+"工作过";}}


0 0
原创粉丝点击