у меня есть один Worker
интерфейс с одним методом:Инициирования объекта с переменным типом
interface Worker {
public void work()
}
У меня 2 классов, которые реализуют Worker
,
class RoadWorker implements Worker {
public void setPropertyA() {}
public void work() {}
}
еще один,
class GardenWorker implements Worker {
public void setPropertyB() {}
public void work() {}
}
В мой класс Application
- на основе некоторого входного флага - я хочу создать экземпляр одного спецификатора IC тип работника ...
class Application {
// flag
String whichWorker = "Road";
// instantiate
if (whichWorker == "Road") {
RoadWorker worker = new RoadWorker();
worker.setPropertyA();
} else {
GardenWorker worker = new GardenWorker();
worker.setPropertyB();
}
// use
worker.work(); <----- OF COURSE THIS DOES NOT WORK (no reference)
Итак, я попытался это -
class Application {
// flag
String whichWorker = "Road";
Worker worker;
// instantiate
if (whichWorker == "Road") {
worker = new RoadWorker();
worker.setPropertyA(); <----- DOES NOT WORK
} else {
worker = new GardenWorker();
worker.setPropertyB(); <----- DOES NOT WORK
}
// use
worker.work();
Мой вопрос - как я разрабатываю свою программу, чтобы выполнить это требование? Я знаю, что один грубый вариант заключается в том, чтобы определить рабочего как Object
, но тогда мне придется делать множество партий различного типа, которые мне не нужны. Может кто-нибудь предложить?
** Не использовать == для сравнения строк !!!! ** – ajb
@ajb - ок, спасибо за указание, что из – hashbrown