设计模式篇之 原型模式 Prototype
别名:克隆
目的
原型是一种创建型设计模式,它允许你在不依赖对象类的情况下复制现有对象。
问题
假设你有一个对象,想要创建它的精确副本。你会怎么做呢?首先,你需要创建一个与原对象相同类的新对象。然后,你需要遍历原对象的所有字段,并将它们的值复制到新对象中。
很好!但这里有一个问题。并不是所有对象都能这样复制,因为对象的一些字段可能是私有的,无法从对象外部访问。

直接方法还有另一个问题。由于你需要知道对象的类才能创建副本,你的代码就会依赖于这个类。如果你不介意这种额外的依赖,还有一个问题。有时,你只知道对象遵循的接口,而不知道它的具体类。例如,当一个方法的参数接受遵循某个接口的任何对象时,就会出现这种情况。
解决方案
原型模式将克隆过程委托给正在被克隆的实际对象。该模式声明了一个所有支持克隆的对象的通用接口。通过这个接口,你可以在不将代码与对象类耦合的情况下克隆对象。通常,这种接口只包含一个`clone`方法。
所有类的`clone`方法实现都非常相似。该方法会创建一个当前类的对象,并将旧对象的所有字段值