创建模式之原型模式浅克隆
来源:互联网 发布:vb.net web开发 编辑:程序博客网 时间:2024/06/05 12:03
package com.djk.design.factory.clone;public class ShallowCloen implements Cloneable{private String name;private int age;private Teacher teacher;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}@Overridepublic Object clone() throws CloneNotSupportedException {return super.clone();}@Overridepublic String toString(){return "ShallowCloen [age=" + age + ", name=" + name + ", teacher="+ teacher + "]";}}
package com.djk.design.factory.clone;public class Teacher {private String terchearName;private int terchearAge;public String getTerchearName() {return terchearName;}public void setTerchearName(String terchearName) {this.terchearName = terchearName;}public int getTerchearAge() {return terchearAge;}public void setTerchearAge(int terchearAge) {this.terchearAge = terchearAge;}@Overridepublic String toString() {return "Teacher [terchearAge=" + terchearAge + ", terchearName="+ terchearName + "]";}}
package com.djk.design.factory.clone;public class Client {public static void main(String[] args) throws CloneNotSupportedException {Teacher teacher = new Teacher();teacher.setTerchearAge(32);teacher.setTerchearName("djk");ShallowCloen shallowCloen = new ShallowCloen();shallowCloen.setAge(24);shallowCloen.setName("test");shallowCloen.setTeacher(teacher);System.out.println(shallowCloen);ShallowCloen cloneShallow = (ShallowCloen) shallowCloen.clone();System.out.println(cloneShallow);cloneShallow.setAge(40);System.out.println(cloneShallow);System.out.println(shallowCloen);cloneShallow.getTeacher().setTerchearAge(45);System.out.println(cloneShallow);System.out.println(shallowCloen);}}
原型模式就是对对象的克隆,克隆分浅克隆和深克隆,上面介绍的是浅克隆,由上面的代码可以知道浅克隆对象的时候,当浅克隆对象里面有另一个对象的引用,则克隆出来的对象改变克隆对象里面的引用的时候会影响到原来的对象。所以当浅克隆对象里面有对另一个对象的引用的时候,克隆的是这个对象在java栈里面的值而没有克隆引用对象。
0 0
- 创建模式之原型模式浅克隆
- 创建模式之原型模式 深克隆
- 设计模式之原型模式(深克隆,浅克隆)
- 克隆(原型)模式
- 原型克隆模式
- 深度克隆,原型模式
- 深入浅出设计模式 ------ Prototype(原型模式)之深度克隆
- 设计模式之五:原型模式—对象的克隆
- 设计模式之原型模式-对象的克隆
- java设计模式之原型模式,如何实现深克隆
- 原型模式-浅克隆和深克隆的自我理解
- 原型模式的浅克隆和深克隆
- 创建模式之Prototype(原型)
- 创建模式之Prototype(原型)
- 创建对象之原型模式
- 创建型之原型模式
- 原型模式(克隆模式,拷贝模式)
- (创建模式)设计模式之Prototype(原型)
- 在ORACLE 10g登陆创建新用户
- 关于iOS8适配时产生的tableView分割线问题
- 程序(进程)内存分布解析
- IOS6屏幕旋转详解
- Users表空间也就是默认用户表空间
- 创建模式之原型模式浅克隆
- ef中不能使用ToString()方法的解决办法
- 谈谈CSS Sprites技术及其优化
- 关于线程的 一些概念
- Africa orientale
- 2014华为机试——两个城市之间的最多路径
- 鼠标点击和键盘点击自动跳转页面
- Africa orientale
- Android的SQLite学习及使用方法