[英]how to pass parameter to singleton in java
我需要使用Web應用程序中的預先輸入功能來顯示數據庫中的名稱。 我使用Dojo過濾選擇來顯示名稱。 這些名稱必須顯示在多個jsp頁面中。 我有一個名為getClientNames()的Java類,該類從數據庫獲取名稱列表。 根據條件的名稱列表會有所不同。 因此,我將根據執行查詢的參數將參數傳遞給該java類。
例如,
public class X{
public List<String> getNames(String param){
if param.equals("x"){
//query 1
}
else{
//query 2
}
return clisntList;
}
我有一個Singleton類來調用getNames方法。
public class ClassicSingleton {
private static ClassicSingleton instance = null;
List<String> clientList;
protected ClassicSingleton() {
// Exists only to defeat instantiation.
}
public static ClassicSingleton getInstance() {
if(instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
public List<String> getName(){
X obj=new obj();
this.clientList=obj.getNames(param);
return this.clientList;
}
}
我需要將參數傳遞給此單例方法getName以獲得正確的結果。 我該如何實現呢?
在世界上為什么要將clientList
作為成員字段? 您只能在getName
內部訪問它,在使用它之前始終對其進行設置-除了阻止優化器和引入競爭條件外,它實際上並沒有任何作用!
將clientList
移動到函數內部后,將參數添加到getName
並將其傳遞給getNames
更有意義:
public List<String> getName(String param){
X obj=new obj();
List<String> clientList=obj.getNames(param);
return clientList;
}
另外,由於沒有真正使用ClassicSingleton
的狀態,因此這里沒有理由使用單例模式。 您可以簡單地使getName
成為靜態方法:
public static List<String> getName(String param){
X obj=new obj();
List<String> clientList=obj.getNames(param);
return clientList;
}
public List<String> getName(String param){
X obj=new X();
return obj.getNames(param);
}
接着:
ClassicSingleton.getInstance().getName(param)
為您工作?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.