gpt4 book ai didi

java - 重用函数时使用什么模式

转载 作者:行者123 更新时间:2023-11-30 06:53:28 25 4
gpt4 key购买 nike

所以我想重用一些功能,例如 try catch 以及我的应用程序使用的其他一些常见功能。我想知道这种方法是否可以。或者如果有其他方法那就太好了。我想了解如何实现这一点的不同方法。

这是服务将使用的回调函数。

 public interface ClientOperation <T>{
T doAction(SomeObject someObject);
}

这是执行ClientOperation回调函数的接口(interface)

 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());

}
});


}

最佳答案

I want to learn the different ways on how I can implement this.

你的方法看起来非常好。我会更进一步,使输入(即 SomeObject)也通用,以便 ClientOperation 可以处理不同的输入类型。

public interface ClientOperation <T,S>{
T doAction(S someObject);
}

另一种方法是使用 Template Method模式,其中 ClientOperation 转换为 abstract 类,其中包含 abstract doAction 方法和具体的 finaltry-catch block 中调用 doActiondoTask 方法。子类提供了 doAction 方法的实现。这种方法的一个缺点是您无法从任何其他类进行扩展。

关于java - 重用函数时使用什么模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42264395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com