Для меня это выглядит как шаблон стратегии , поскольку вы делаете что-то свое для каждого DeviceType
.В таком случае у вас может быть общий интерфейс, который будет выполнять stuff happens
(что бы это ни было).Например:
// if you have java-8, this could be replaced with java.util.Consumer for example
interface Handler {
public void handle();
}
, тогда вы можете создать все необходимые обработчики.
static class SmartPhoneHandler implements Handler {
public void handle(){
// handle smart phone logic here
}
}
Вам необходимо зарегистрировать их на Map
:
Map<DeviceType, Handler> strategies = new HashMap<>(); // or EnumMap in case DeviceType is an enum
strategies.put(DeviceType.SmartPhone, new SmartPhoneHandler());
// all others like this
позднее использование будет:
strategies.get(device.getType()).handle()
Если вам нужны некоторые параметры в качестве входных данных для метода handle - вам следует создать другой держатель с именем StrategyContext
, который будет принимать в качестве входных данных необходимые параметры, например:
static class StrategyContext {
private final int deviceId; // for example
// .... constructor/getters
}
и, следовательно, ваш метод handle
изменится на:
handle(StrategyContext context)