我了解包范围的概念,有时甚至认为我想要它。但是,每次我认真地尝试使用它时,我发现它都不符合我认为可以满足的需求。
我的主要问题始终似乎是,我希望限制范围的东西从来不在同一包中。它们可能在概念上全部链接在一起,但是应用程序中数据的逻辑划分将它们作为较大包的单独子包。
例如,我可能有一个Mission模型,并且我只希望其他Mission工具(例如我的missionServices)使用某些方法。但是,我最终将Missions.models和Missions.services作为我的包,所以MissionModel和MissionService不在同一包范围内。似乎从来没有出现过这样的情况:程序包适当地包含了我希望具有提升的权限的内容,却又不包含我不希望拥有这些权限的许多内容;我几乎没有感觉到包范围界定方法的优势证明修改我的项目体系结构以将所有内容都放在同一包中是合理的。通常,无论是Aspect还是某种形式的控制反转,都是解决我简要考虑过的程序包作用域的任何问题的更好方法。
我很好奇,这在所有Java开发人员中通常被认为是正确的,或者只是我所做的工作的fl幸。封装范围在现实世界中使用率很高吗?在很多情况下,它被认为是很好的使用形式,还是在大多数情况下,它被视为遗留行为而很少被开发利用?
我没有问任何关于为什么包私有作用域是默认值的问题,我在问什么时候应该使用它而不考虑默认值。关于为什么默认为默认值的大多数讨论并没有真正进入包范围实际有用的时间,而只是在争论为什么不应该将其他两个常用范围设为默认值,从而使包在消除过程中获胜。另外,我的问题是关于当前的发展状况。具体来说,我们是否已经开发到其他工具和范例使得程序包作用域不那么有用的地步,而当它成为默认值的决定才有意义时。