gpt4 book ai didi

java - 这是使用接口(interface)回调的正确方法吗?

转载 作者:行者123 更新时间:2023-11-30 01:39:17 24 4
gpt4 key购买 nike

我读了thisthis并发现在 B 类中我需要保存对 A 类的引用,当 B 类中发生某些事情时,我们执行由定义的方法A 类实现的接口(interface)。好吧,我以某种方式理解了它。我以有点不同的方式使用接口(interface)来调用回调:

interface IHelper {
void onActionDone ();
void onActionFailed ();
}

public class Helper implements IHelper {

public Helper (Param param) {
// here we do what Helper class intended to do
// ...
// now call the any of callbacks
if(everything == OK) {
onActionDone();
} else {
onActionFailed();
}
}

@Override
public void onActionDone() {}

@Override
public void onActionFailed() {}
}

public class MainClass () {
new Helper(message) {
public void onActionDone () {
// here we can do anything we want after Helper will done its functions
}
public void onActionFailed () {
// or not done
}
}
}

我发现这种方式更具可读性和更容易理解,但不确定这是否是一种不好的做法。那么,我可以自由地走得更远吗?

最佳答案

在我看来,这不是一种好的编程方式。通常你甚至不需要接口(interface)来实现这样的设计,你可以在实例化时覆盖类的每个方法。实际上,您并不是在实例化该类,而是在实例化一个匿名类,该类是该类的子类。

让我们回到问题上来,接口(interface)应该像字面意思一样使用。它们应该用作两个组件之间的接口(interface)。从软件工程的角度来看,假设你在一个开发大型软件系统的团队中,在这种情况下,在设计阶段你和你的队友应该就一个标准的和全局可接受的接口(interface)达成一致,两个组件将通过该接口(interface)交互并假设这两者之一的实现取决于您,而另一个将由您的队友实现,因此为了实现互操作性,您的代码必须符合该接口(interface),您的队友也是如此。

在您的情况下,您实际上是将该标准接口(interface)合并到您自己的组件中,因此您的队友可能对此不满意。

长话短说:

你的方法不好。

关于java - 这是使用接口(interface)回调的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710809/

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