2015-06-24 2 views
2

У меня есть 50 различных классов. Я создал общий класс (All) со всеми этими 50 классами.Избегайте, если инструкция else

public class All { 

    private First first; 
    private Second second; 
    private Third third; 
... 


//GETTERS AND SETTERS 
} 

У меня есть универсальный метод, так и внутри этого у меня есть этот кусок кода:

All all=new All(); 

     String result; 
     if(all.getFirst()!=null){ 
      result=methodA(all.getFirst()); 
     } 
     else if(all.getSecond()!=null){ 
      result=methodB(all.getSecond()); 
     } 
     else if(all.getThird()!=null){ 
      result=methodC(all.getThird()); 
     } 
... 

Я не люблю эту конфигурацию, потому что подмигнули нечитаемый код для многих классов.

Как я могу улучшить этот код?

+0

отражение может помочь вам ... –

+3

Посмотрите стратегии стратегии и фабрики. – John

+1

вам нужно реализовать 'get (int index)', в цикле 'for' вы запускаете для всех элементов и проверяете на null – Andrew

ответ

1

Вы можете определенно очистить это с помощью Reflection или создать свою собственную версию. У вас будет что-то вроде: all.getObjects(); Затем, чтобы отскок от 2-мерного массива, чтобы захватить метод, необходимый для вызова, затем вызовите это.

Если я вернусь позже, чтобы закончить это. но до тех пор здесь нет некоторые вещи, которые я нашел:

using reflection to get objects from collection class

What is reflection and why is it useful?

2

Может быть, следующий фрагмент кода является полезным для вас:

All all = new All(); 

String result; 

for(int i = 0; i++ < all.length();) { 
    YourInterface element = all.get(i); 
    if(element != null) 
     result = method(element); 
} 

где

  • length() - количество классов
  • get(int index) - метод доступа к элемент из индекса
  • YourInterface - общий интерфейс для всех ваших классов

Следующим шагом является использование отражения.

1
String result = all.getFirst() != null ? methodA(all.getFirst()) 
    : all.getSecond() != null ? methodB(all.getSecond()) 
    : all.getThird() != null ? methodC(all.getThird()) 
    : null; 
Смежные вопросы