Aly*_*Aly 14 java packaging design-patterns factory
我想知道如何在我的应用程序中打包我的工厂.工厂应该与使用它的类位于同一个包中,与它创建的对象在同一个包中还是在它自己的包中?
感谢您的时间和反馈
Fra*_* IV 23
通常工厂与他们创建的对象在同一个包中; 毕竟他们的目的是创造那些对象.通常它们不在一个单独的包中(没有理由).使工厂与他们创建的对象位于同一个包中,这样您就可以利用包的可见性.
Factory的全部重点是具有一种可配置的方式来创建接口的实现实例。将工厂与提供的实现类放在同一包中的约定增加了完全不必要的限制,您将来不太可能遇到这种限制。同样,如果返回的实现在所有上下文中都不相同,那么将其包含在同一包中就没有意义了。
例如,假设在应用程序的客户端和服务器部分之间共享一个服务查找工厂,该工厂将在客户端返回客户端实现(驻留在仅客户端程序包中),并返回服务器端实现(在服务器中) -only包)在服务器的运行时中调用。
您的工厂甚至可以是可配置的(我们通过具有一个XML文件来定义该接口返回哪个实现类来实现此目的),因此可以轻松切换实现类,或者可以将不同的映射用于不同的上下文。例如,当进行单元测试时,我们使用一种配置,该配置返回接口的模型实现(可以进行非集成测试的单元测试),并且要求这些模型实现都处于同一状态根本没有任何意义。打包为工厂,因为它们是测试代码而不是运行时代码的一部分。
我的建议: