gpt4 book ai didi

Java - 监听器/观察者 VS 子类保护方法

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

我在 ThreadPoolExecutor 中观察到以下空方法:

protected void beforeExecute(Thread t, Runnable r) { }

protected void afterExecute(Runnable r, Throwable t) { }

protected void terminated() { }

在文档中,它说我们可以重写子类或匿名内部类中的那些方法,这些方法将在进程之前调用,这意味着这些 protected 方法代表监听器/观察者来通知池中的下一个进程。

我的问题是:

正常listeners/observers有什么缺点?是什么促使 Doug Lea 使用这种方式?

最佳答案

如果您想公开访问这些事件,那么为这三个事件创建监听器将是一种更好的方法,因为它在类与其监听器之间提供了更高程度的解耦。

使访问 protected 意味着类和监听器之间有更高程度的亲和性:类的设计者最终将为监听器创建一个 protected RunnerListener 接口(interface),添加一个 protected DefaultRunnerListener 实现适用于需要重写一两个方法的情况,并添加一个 protected 方法来提供监听器。因为对此类监听器的访问也将受到保护,所以您将无法对其使用工厂方法。

考虑到所有这些,作者认为提供 protected 方法会更容易,而不是增加上面不必要的解耦的复杂性。

关于Java - 监听器/观察者 VS 子类保护方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776916/

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