[这不是23247951的副本]
我可能制作了太多的包,有些包装也是如此mightypork.gamecore.control.events.input.
大多数情况下它很好,但有时我不确定我做得对.这是一个示例图像:

做Tile.java和TileRenderer.java属于tile包,因为它们是"顶级"抽象或接口,或者进入子包,因为实现都在那里?我希望结构合乎逻辑,但我真的不确定.请注意,这只是一个例子,我在至少十几个地方处于类似情况.
更一般地说,为一个具体的实现做一个子包是一个好的做法吗?
如果定义包,请尝试考虑模块性.哪种类型可以解决软件的一个方面,构成一个具有清晰边界的模块?哪些其他类型定义了另一个依赖于其他模块的模块?Java seam中的包是分层的,但它们不是.从来没有,使子包只依赖于超级包,而不是相反.拥有不依赖于超级包的子包是可以的.并且不要像all my DAOs或那样创建技术包all my Controllers.包装的一个主要驱动方面是包装内的类型具有的内聚程度.另一个是应用程序的分层.
我的方法是:首先将所有内容放入一个包中.当您的应用程序发展时,识别模块并重新打包它们.尽量保持低包之间的依赖关系.检查相同软件包的任何一种类型是否相互依赖,或者它们是否涉及相同的方面/共享相关职责.