2008-12-10 4 views
0
 String fullName = PATH + "." + name; 
     Class cl= Class.forName(fullName); 
     if(name.equalsIgnoreCase("MobileSearch")){ 
      if(msearchType==null){ 
       msearchType=(SearchInterface)cl.newInstance(); 
      } 
      return msearchType; 

     } 
     if(name.equalsIgnoreCase("BookSearch")){ 
      if(bsearchType==null){ 
       bsearchType=(SearchInterface)cl.newInstance(); 
      } 
      return bsearchType; 

     } 

Как я могу избавиться от заявлений if здесь.
Я использую отражение.
Пожалуйста, помогите. Заранее спасибо.Создание singleton factory

+0

Существует не хватает кода, чтобы понять, что вы хотите. Что такое msearchtype и bsearchtype? Откуда у вас имя? – gcores 2008-12-10 12:42:59

ответ

0

Вы только что возвращаете экземпляр SearchInterface? Если да, то почему:

String fullName = PATH + "." + name; 

Class cl= Class.forName(fullName);     
if(searchType==null){         
    searchType=(SearchInterface)cl.newInstance(); 
}       
return searchType; 

Надеюсь, что это поможет.

+0

Мне нужно создать только один экземпляр i.e singleton, и у меня есть несколько доменов. Как показано в опубликованном фрагменте i, я проверяю, является ли каждый объект домена нулевым, прежде чем я создам экземпляр. Мне нужна работа для этого. пожалуйста помоги. – 2008-12-10 12:54:41

2

Используйте Карта:

if (!searchInstances.containsKey(name)) 
{ 
    searchInstances.put(
    name, 
    (SearchInterface)Class.forName(PATH + "." + name).newInstance() 
); 
} 

return searchInstances.get(name); 
Смежные вопросы