try catch
などの一部の機能や、アプリケーションで使用されるその他の一般的な機能を再利用したかったのです。私はこのアプローチがOKかどうか疑問に思っていました。または、他にも素晴らしい方法があれば。私はこれをどのように実装できるかについてさまざまな方法を学びたいと思う。関数を再利用するときに使用するパターン
これは、サービスが使用するコールバック関数です。
public interface ClientOperation <T>{
T doAction(SomeObject someObject);
}
そして、これはClientOperation
public interface Executor {
<T> T doTask(ClientOperation<T> operation);
}
のコールバック関数を実行するインターフェイスであるExecutor
public class ExecutorImpl implements Executor {
public <T> T doTask(ClientOperation<T> operation) {
T response = null;
/*
DO SOMETHING FIRST - USED BY ALL CLASSES
*/
try {
response = operation.doAction(someObject);
} catch (SomeException e) {
/*
DO SOME SERIOUS STUFF
*/
} catch (Exception e) {
LOGGER.error(e.getMessage());
throw new SystemException(e.getMessage(), e);
}
return response;
}
}
何かをすると、コールバック関数を実装するサービスの実装クラス
public void addSomething(final Secret secret)
throws UnauthorizedActionException, InvalidSecretKeyException {
executorService.doTask(new ClientOperation<Response>() {
public Response doAction(SomeObject someObject) {
//DO STUFF ON THIS
return template.write(secret.getPath(),
secret.getSecretValue());
}
});
}
素晴らしい!フィードバックをお寄せいただきありがとうございます。私はまた、テンプレートメソッドも具体的なサブクラスを1つの実装方法に限定していると考えています。 –