我有一个编程问题,我想知道它是否可以使用 Java 设计技术来解决。我有班级服务,我有班级客户。客户端请求一个服务,如果它不存在,那么它将被创建(即新的服务对象)。如果服务已创建(即由不同的客户端甚至相同的客户端),则服务类将不会创建新对象。相反,可以将客户端添加到服务中(如果尚未添加)。Service 类的其他字段和方法将应用于同一服务的客户端。
public class Service {
private String service;
private ArrayList<Integer> clients;
//.... other field
public Service (String s){
this.service = s;
clients = new ArrayList<>;
}
public void addClient(int c){
clients.add(c);
}
//..other methods
}
public class Client {
private int clientID;
private ArrayList<String> services;
public Client(int id){
clientID = id;
services = new ArrayList<>;
}
public void addService(String s){
services.add(s);
}
public void requestService() {
for(int i=0; i<services.size();i++)
Service s = new Service(services.get(i));
}
}
上述方法的问题在于,具有相同服务的新服务对象将由不同的客户端创建。
我目前正在阅读静态工厂。就我的研究而言:
public class Service(){
private Service(){
}
public static Service createService(String service){
if (/*service doesn't exist*/)
return new Serivce();
else
return null;
}
//....
}
上面的代码将阻止创建新的对象实例。但是,如果服务已经存在并因此返回 null,则新客户端无法加入(或使用)该特定服务。