在Lucene的世界中,它被称之为特性。
当某些用户需要得到某些细节,方针是开放类。
这导致了大多数的类都是包保护级别的,这意味着你不能够继承他们(除非在你创建的类似在同一个包下,这样做会污 染客户代码)或者你不得不复制和重写代码。
更重要的是,如同上面一点提到的,这个严重缺乏OO设计的结构,一些类应该被设为内部类却没有,匿名类被用作复 杂的计算当你需要重写他们的行为。
关闭API的理由是让代码在发布前变得整洁并且稳定。
虽然想法很光荣,但它再一次让人感到痛苦。因为如果你有一些代码和 Lucene的主要思路并不吻合,你不得不经常回归Lucene的改进到你自己的版本直到你的补丁被接受。
然而当开发者开始越来越长的限制API的更改,你的补丁很少有机会被接受。
在一些类和方法上加上final修饰符会让你遇到问题。
我认为如果Spring框架有这样的限制,是绝不会流行起来。