Oop 如何使用具有正确含义的原型模式?
我试图理解原型设计模式 下面是示例代码Oop 如何使用具有正确含义的原型模式?,oop,design-patterns,Oop,Design Patterns,我试图理解原型设计模式 下面是示例代码 public class App { public static void main(String[] args) { //Prototype proto = new Prototype(); Dog d = new Dog(); Dog clone ;//= (Dog)proto.getClone(d); clone = (Dog) d.makeCopy();
public class App {
public static void main(String[] args) {
//Prototype proto = new Prototype();
Dog d = new Dog();
Dog clone ;//= (Dog)proto.getClone(d);
clone = (Dog) d.makeCopy();
System.out.println(d);
System.out.println(clone);
System.out.println("xxxxxxxxxxxxxx");
//System.out.println();
//d.setval("test");
//System.out.println(clone.getVal());
}
}
很明显,狗的克隆是如何在原型中创建的
Dog d = new Dog();
Dog clone ;
clone = (Dog) d.makeCopy();
但如果不做所有这些步骤,我们就不能简单地做到这一点吗
Dog d = new Dog();
Dog clone = d;
我能想到的唯一用法是通过Prototype动态创建克隆对象,因为我们可以传递Dog类型的超类的任何子类
我说得对吗?或者还有其他需要添加的内容吗?此代码:
Dog d = new Dog();
Dog clone = d;
不创建对象的副本。您将从变量d
和clone
链接相同的对象。您可以通过向Dog类添加一些字段并在clone中为其赋值来检查这一点。然后检查d的值。应该是一样的
makeCopy
的正确实现应该调用一个new
操作符,该操作符创建一个全新的对象,并用原型的数据填充它。可能重复的