Для Java 7 и ниже мы можем объявить интерфейс для реализации функции.
для Java 8+ мы можем использовать Функция интерфейс.
Интерфейс:
public interface FunctionExecutor {
public Object execute(String from,String to);
}
Контекст функции:
public class FunctionContect {
HashMap<String, FunctionExecutor> context=new HashMap<String, FunctionExecutor>();
public void register(String name,FunctionExecutor function){
context.put(name, function);
}
public Object call(String name,String from,String to){
return context.get(name).execute(from, to);
}
public FunctionExecutor get(String name){
return context.get(name);
}
}
Реализации функций:
public class RunFunctionImpl implements FunctionExecutor{
@Override
public Object execute(String from, String to) {
System.out.println("function run");
return null;
}
}
// OTHER FUCNTIONS
Регистрация функции:
FunctionContect contex = new FunctionContect();
contex.register("run", new RunFunctionImpl());
contex.register("walk", new WalkFunctionImpl());
contex.register("hide", new HideFunctionImpl());
Функция вызова
context.call(action, from, to);
или
context.get(action).execute(from,to);