Java 维护一组类似对象的建议
我有一门课要讲大陆。我创建了许多这样的实例。我希望将所有此类实例存储在一个集合中。每次创建新对象时,都应将其添加到集合中Java 维护一组类似对象的建议,java,Java,我有一门课要讲大陆。我创建了许多这样的实例。我希望将所有此类实例存储在一个集合中。每次创建新对象时,都应将其添加到集合中 public class Continent { private static HashSet<Continent> globalContinents = new HashSet(); final private String continent_name; Continent(String continent_name){
public class Continent {
private static HashSet<Continent> globalContinents = new HashSet();
final private String continent_name;
Continent(String continent_name){
this.continent_name = continent_name;
Continent.globalContinents.add(this);
}
}
这是给我一个物体泄漏的警告。我将使用多线程,那么,您有什么建议可以有效地实现这样的事情吗?一个设计思想?Mabye更容易作为一个内部类实现:
public class Earth {
private static HashSet<Continent> globalContinents = new HashSet();
public Earth() {
}
public void addContinent(String name) {
globalContinents.add(new Continent(name));
}
private class Continent {
private String continent_name;
public Continent(String continent_name){
this.continent_name = continent_name;
}
public String getName() {
return this.continent_name;
}
}
}
所以,所有的圆锥元素都在地球的散列集中,所以你只需要创建一个地球对象,然后用AddContinents添加圆锥元素。你可以为你的大陆创建一个简单的工厂
public class ContinentFactory {
private Set<Continent> continents = new HashSet<>();
public Continent create(String name) {
Continent continent = new Continent(name);
continents.add(continent);
return continent;
}
public static class Continent {
private String continentName;
public Continent(String continentName) {
this.continentName = continentName;
}
...
equals and hashcode
....
}
}
您还应该遵循Java命名约定:
首先,如果这是您的整个大陆类,那么您需要实现equals和hashCode以满足集合的约定,例如,委托给您的大陆名称我想到的一件事是使用静态方法创建对象,并将其添加到集合中。这个解决方案听起来很公平?非常感谢,有什么好的资源可以了解更多关于“工厂”设计的信息吗?这只是对创建一个大陆的抽象。但是,如果您想探索用java实现的众多模式,我建议您使用这个存储库-