一个关闭的API使得继承Lucene成为痛苦

在Lucene的世界中,它被称之为特性。

当某些用户需要得到某些细节,方针是开放类。

这导致了大多数的类都是包保护级别的,这意味着你不能够继承他们(除非在你创建的类似在同一个包下,这样做会污 染客户代码)或者你不得不复制和重写代码。

更重要的是,如同上面一点提到的,这个严重缺乏OO设计的结构,一些类应该被设为内部类却没有,匿名类被用作复 杂的计算当你需要重写他们的行为。

关闭API的理由是让代码在发布前变得整洁并且稳定。

虽然想法很光荣,但它再一次让人感到痛苦。因为如果你有一些代码和 Lucene的主要思路并不吻合,你不得不经常回归Lucene的改进到你自己的版本直到你的补丁被接受。

然而当开发者开始越来越长的限制API的更改,你的补丁很少有机会被接受。

在一些类和方法上加上final修饰符会让你遇到问题。

我认为如果Spring框架有这样的限制,是绝不会流行起来。