gpt4 book ai didi

java - 接口(interface)声明以抽象作为参数的方法

转载 作者:行者123 更新时间:2023-12-01 06:41:58 29 4
gpt4 key购买 nike

我对以下示例中的最佳实践有疑问:

interface Request;
interface Service {
void process(Request request)
}

class MyService implements Service;
class YourService implements Service;

class MyRequest implements Request;
class YourRequest implements Request;

但是如何确保MyService始终收到MyRequest,而YourService只会收到YourRequest,而不是收到YourRequest以相反的方式? MyService.process(...) 中明显的答案“if-instance-of-check”看起来很丑陋,并且在某种程度上违反了 SOLID 原则。也许有更好的方法?

也许泛型是一个很好的解决方案? (但是,如何在必须在 Java 1.4 下运行的代码中使用它们呢?)

最佳答案

简单地说,您正在建立一个您不想遵守的界面,因此这并不是一个真正理想的设计。

我的意思是,如果 MyService 实现了 Service,那么它必须能够接受任何类型的请求。否则,它不遵循定义的契约(Contract)。

我会质疑为什么在这种情况下你有 Service 接口(interface),如果你确实需要它(对于其他方法),如果子类不打算使用 process(Request request) 方法是否适合在那里尊重它。

关于java - 接口(interface)声明以抽象作为参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887452/

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