gpt4 book ai didi

java - 这段代码是否不遵循或违反原型(prototype)模式?

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:19 24 4
gpt4 key购买 nike

我没有获取克隆对象并修改属性,而是首先修改对象的属性,然后返回其克隆。规则方面和性能方面有什么区别吗?此外,有关设计的任何其他建议都会很棒。谢谢。

public class Category implements Cloneable {

private int id;
private String title;
private int totalGames;

// getters and setters
public Category clone() {
try {
return (Category)super.clone();
} catch(CloneNotSupportedException ex) {
return null;
}
}
}


public class CategoryCache {

private static Category category = new Category(0, null, 0);

private CategoryCache() {

}

public static Category getCategory(int id, String title, int totalGames) {
category.setId(id);
category.setTitle(title);
category.setTotalGames(totalGames);
return category;
}
}


while (<100 times>) {
Category category = CategoryCache.getCategory(<var1>, <var2>, <var3>).clone();
arlCategory.add(category); // add to arraylist
}

最佳答案

Prototype 实际上不仅仅是一种模式,它是一种提高 Java 性能的解决方案。我们需要理解的基本事情是“每当我们认为直接创建看起来成本高昂时,我们就需要原型(prototype),因此我们使用现有原型(prototype)的克隆而不是新创建的。

因此,我们首先用 someExistingObject.clone() 替换创建 (new())。

所以无论你在克隆之前/之后改变属性并不重要,你已经达到了最终的目标。所以结果是一样的。

您的方式唯一的区别是,您用于克隆目的的对象(您一次又一次地使用)很可能是仅用于克隆过程的专用对象,而不能执行任何其他工作。

关于java - 这段代码是否不遵循或违反原型(prototype)模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39672627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com