首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java侦听器/观察者VS子类保护方法

Java侦听器/观察者VS子类保护方法
EN

Stack Overflow用户
提问于 2018-06-10 01:38:28
回答 1查看 94关注 0票数 1

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

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

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

protected void terminated() { }

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

我的问题是:

正常的 中促使Doug Lea使用这种方式的缺点是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-06-10 01:49:18

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

使访问受保护意味着类和侦听器之间具有更高程度的亲和性:类的设计者最终会为侦听器创建一个受保护的RunnerListener接口,在需要覆盖一个或两个方法时添加一个受保护的DefaultRunnerListener实现,并为您添加一个受保护的方法来提供侦听器。由于对此类侦听器的访问也会受到保护,因此不能对其使用工厂方法。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50776916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档