Исходный код:
public void updateState(final int state)
{
preSet();
itsState = state;
postSet();
}
public void setTitle(final String title)
{
preSet();
itsTitle = title;
postSet();
}
После моей реализации шаблона команд:
public void updateState(final int state)
{
CallableManager.doInTransaction(new Callable<Void>()
{
@Override
public Void execute()
{
itsHiddenNodes = hiddenNodes;
return null;
}
});
}
public void setTitle(final String title)
{
CallableManager.doInTransaction(new Callable<Void>()
{
@Override
public Void execute()
{
itsTitle = title;
return null;
}
});
}
Этот интерфейс создан для метода pass в качестве параметра.
private interface Callable<T>
{
public T execute();
}
Этот класс создан для управления шаблоном команд.
private class CallableManager
{
public <T> static void doInTransaction(final Callable<T> callable)
{
preSet();
callable.execute();
postSet();
}
}
Как вы видите, реализация шаблона команды не выглядит очень эффективной, по крайней мере, как строка кода для этого примера. В этом примере я реализую шаблон команды для выхода из повторяющегося кода и уменьшения строки кода. Но в результате они оба не предусмотрены для этого примера. Пожалуйста, дайте мне совет. Как эффективно использовать шаблон команд?