前面提到的Laptop类将被修改为使用静态工厂方法实现对象工厂。构造函数因此要为私有:
private Laptop (String reference){
this.reference = reference;
numLaptops = numLaptops + 1;
}
提供一个公共的getInstance方法,以确保计算机对象仅实例化一次。定义了一个静态哈希图LAPTOPS,以通过其引用来跟踪便携式计算机对象:
提供一个公共的getInstance方法,以确保计算机对象仅实例化一次。定义了一个静态哈希图LAPTOPS,以通过其引用来跟踪便携式计算机对象:
... LAPTOPS = new HashMap<String, Laptop>();
要求完成getInstance的方法:
要求完成getInstance的方法:
public static Laptop getInstance(String reference) {
// Code to insert here
}
如果这道题就是这样子的话,那代码表述如下。
public static Laptop getInstance(String reference) {
// Code to insert here
if(LAPTOPS.containskey(reference)){
return LAPTOPS.get(reference);
}
else{
LAPTOPS.put(reference, new Laptop(reference));
return LAPTOPS.get(reference);
}
}
大概是比较单纯的用HASHMAP判断是否该对象已经被实例化过了,如果没有被实例化,就新建一个实例对象放入哈希表中。其实我不知道这个哈希表是在类内还是类外,不过就按可以直接调用来算吧。
有前情提要吗?题主。比方说Laptop类之前是怎么定义的,以前Laptop有什么其他的方法或者参数。