У меня есть перечисление
public enum Vehicle {
CAR("CAR", "Car"), PUSHBIKE("PUSHBIKE", "PuschBike");
public boolean isCar()
{
...
}
public boolean isPushBike()
{
....
}
}
У меня есть 2 DAO CarDAO
и PushBikeDAO
, которые реализуют BaseDao
У меня есть управляемый компонент JSF, что-то вроде этого
public class JsfManagedBean {
private Vehicle vehicle;
private BaseDAO baseDao;
public void Search()
{
//I need to get rid of this if statement
if (vehicle.isCar())
{
baseDao = new CarDao;
baseDao.search();
}
else if(vehicle.isPushBike())
{
baseDao = new PushBike;
baseDao.search();
}
//Please Note each type of search is very different call to an other party's Jar
}
}
Я пытаюсь избавиться от этого if if, возможно, с помощью обобщений или любой правильной ОО-методики.
может быть что-то вроде
baseDao = new baseDaoImpl<getClass(vehicle.getcode())>
где, если vehicle.getcode()
возвращает строковое значение Car, у меня есть класс модели Car.
Просто громко подумать (действительно стучит соломкой :)).
Это ответ на этот вопрос mine