У меня есть класс перечислениеКак использовать шаблон дизайна вместо коммутатора случае
public enum TaskName {
LOGIN,REGISTER,MESSAGE
}
Я использую это перечисление с выключателем случае
public class TaskController {
private UserDao userDaoJpaImpl;
private FriendDao friendDaoJpaImpl;
private GroupDao groupDaoJpaImpl;
private MessageDao messageDaoJpaImpl;
public TaskController() {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("Eclipselink_JPA");
userDaoJpaImpl = new UserDaoJpaImpl(emfactory);
friendDaoJpaImpl = new FriendDaoJpaImpl(emfactory);
groupDaoJpaImpl = new GroupDaoJpaImpl(emfactory);
messageDaoJpaImpl = new MessageDaoJpaImpl(emfactory);
}
public void doIt(String taskName)
{
switch (taskName) {
case LOGIN:
userDaoJpaImpl.create(/*Something*/);
//Implementation
break;
case REGISTER:
//Implementation
break;
case MESSAGE:
messageDaoJpaImpl.create(/*Something*/);
//Implementation
break;
}
}
}
Я создаю объект TaskController в статический контроллер TaskController = new TaskController()
так, чтобы объект был создан только один раз
Теперь я планирую использовать команду вместо выключателя случае
, но я застрял, как использовать мой UserDaoJpaImpl, FriendDaoJpaImpl, GroupDaoJpaImpl, MessageDaoJpaImpl внутри команды classess
Редактировать
Command Класс
public interface Command {
void setSession(Session session); //Session is websocket connection session not HttpSession
void setConnectedUser(Map<String, UserDTO> connectedUser);
void setData(String data);
JSONObject execute();
}
Я хочу, чтобы переместить весь журнал ic из TaskController.doIt() в другой класс команд, который будет реализовывать командный интерфейс.
Я использую Websocket. Я не хочу использовать пружину для этой проблемы
Заранее спасибо
Командный шаблон в порядке. Но теперь это больше похоже на то, что вам нужен шаблон фабрики для создания экземпляров. Что заставляет вас думать, что вам нужен командный шаблон? Это требование или вы нашли вызов в этом?Но все ваши классы Impl должны реализовать интерфейс и просто вызвать метод create, основанный на нем. –
извините, что я вставил старый код. Я уже реализовал интерфейс. Это не требование, которое я предложил. – abhishek221192
Возможно, ваш контроллер слишком много (по крайней мере, один метод). Забудьте шаблон команды или у вас возникнет другая проблема. – atamanroman