Просто базовое предложение, но вы можете преобразовать его в нечто вроде «Командного образца». Этот шаблон позволяет вам инкапсулировать некоторые функциональные возможности в класс, который реализует единственный метод. Класс может быть создан и передан в другой класс для выполнения, и класс executor не должен знать или заботиться о том, что он делает, ему просто нужно вызвать execute (). Если действия требуют аргументов, классы, реализующие Command, могут включать поля / свойства, которые могут быть установлены в конструкторе или стандартными установщиками свойств.
Создайте такой интерфейс (у меня Java ржавый, так что это может быть неверный синтаксис на 100%):
public interface Command
{
public void execute();
}
public class ActionOne implements Command
{
public void execute()
{
// do actionOne...
}
}
public class ActionTwo implements Command
{
public void execute()
{
// do actionTwo...
}
}
// etc. for more actions
Затем создайте класс, который выполняет действие, и вызывающему коду просто нужно передать правильный класс реализации Command.
public class Executor
{
public void executeCommand(Command command)
{
try
{
// Put any boilerplate code here (logging, auditing, etc.)
command.execute();
}
catch (Exception ex)
{
// Put general error handling code here. If you're just catching and rethrowing, consider not catching the Exception at this level. If it's a checked exception, add a throws clause to the method.
throw new CustomException();
}
}
}