原文地址:https://jaune162.blog/design-pattern/prototype-pattern/
引言
在Java中如果我们想要拷贝一个对象应该怎么做?第一种方法是使用 getter
和setter
方法一个字段一个字段设置。或者使用 BeanUtils.copyProperties()
方法。这种方式不仅能实现相同类型之间对象的拷贝,还可以实现不同类型之间的拷贝。
如果仅考虑相同对象之间的拷贝,有没有什么更优雅的方式呢?那就是原型模式。
定义及实现
定义
Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
结构
原型模式就是类中提供一个拷贝方法,用于拷贝一个和自身属性一模一样的对象。
代码实现
第一种方式
public interface Prototype<T> {T copy();
}@NoArgsConstructor
@Data
public class ConcretePrototype1 implements Prototype<ConcretePrototype1> {private String name;private Integer age;public ConcretePrototype1(String name, Integer age) {this.name = name;this.age = age;}@Overridepublic ConcretePrototype1 copy() {return new ConcretePrototype1(this.name, this.age);}
}public class Main {public static void main(String[] args) {ConcretePrototype1 p1 = new ConcretePrototype1();p1.setAge(18);p1.setName("prototype1");System.out.println(p1);ConcretePrototype1 p2 = p1.copy();System.out