什么是网站的根目录营销型网站建设方案
创建型模式 -原型模式 (Prototype Pattern)
它允许通过复制现有对象来创建新对象,而无需知道对象的具体创建细节。在 Java 中,可以通过实现 Cloneable 接口和重写 clone() 方法来实现原型模式。
- 有深、浅两种克隆
- 类实现 Cloneable 接口就可以深克隆
- 如果类中又包含了引用类型对象,这部分将不能被深克隆,会变成浅克隆
- 什么意思呢? 举例一个 Box 类, 类里面引用了 SubBox 类, 当 Box 被克隆的时候, SubBox 引用的是同一个对象
public class Box implements Cloneable {private String name;private String color;private Double width;// 引用类型, 指的是这部分只会被浅克隆private SubBox subBox; // 那么怎么解决这种包含引用对象也深克隆呢? // 可以采用序列化写入成文件, 再反序列化转回来成对象,也能达到连引用类型也深克隆的效果// 就像前端 JavaScript 对象,你应该没少写把对象转成 JSON 字符串再转回来,来达成深克隆}```
// 定义可克隆的形状类
class Shape implements Cloneable {private String type;public Shape(String type) {this.type = type;}public String getType() {return type;}// 重写 clone 方法@Overridepublic Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();return null;}}
}// 客户端代码
public class PrototypePatternExample {public static void main(String[] args) {// 创建原始形状对象Shape originalShape = new Shape("Circle");// 克隆形状对象Shape clonedShape = (Shape) originalShape.clone();System.out.println("Original Shape Type: " + originalShape.getType());System.out.println("Cloned Shape Type: " + clonedShape.getType());}
}